Histórico da Página
...
Bloco de código | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
#include "Protheus.ch"
User Function M467Auto()
Processa( { || GeneraNF() } , "", "Generando NF con carta porte..." )
Return
Static Function GeneraNF()
Local aCab := {}
Local aLinha := {}
Local aItens := {}
Local aCartaPorte := {}
Local cSerie := "A "
Local cDoc := ""
Local cCertFol := SuperGetMv("MV_CFDI_CS",,"")
Local cProd := PadR("TST000000000037",20)
Private lMsErroAuto := .F.
// Consecutivo factura
SX5->(DBSetOrder(1))
SX5->(MsSeek(xFilial("SX5")+"01"+cSerie))
cDoc := IIf( SX5->(Found()), PadR(Trim(X5Descri()),20) , StrZero(126,20,0) )
// Encabezado de factura
AAdd( aCab, { "F2_CLIENTE", "016082" , Nil } )
AAdd( aCab, { "F2_LOJA" , "01" , Nil } )
AAdd( aCab, { "F2_SERIE" , cSerie , Nil } )
AAdd( aCab, { "F2_DOC" , cDoc , Nil } )
AAdd( aCab, { "F2_COND" , "015" , Nil } )
// AAdd( aCab, { "F2_CONUNI" , "2" , Nil } )
AAdd( aCab, { "F2_EMISSAO", dDataBase , Nil } )
AAdd( aCab, { "F2_EST" , "QRO" , Nil } )
AAdd( aCab, { "F2_TIPO" , "N" , Nil } )
AAdd( aCab, { "F2_ESPECIE", "NF " , Nil } )
AAdd( aCab, { "F2_PREFIXO", "A" , Nil } )
AAdd( aCab, { "F2_MOEDA" , 1 , Nil } )
AAdd( aCab, { "F2_TXMOEDA", 1 , Nil } )
AAdd( aCab, { "F2_FORMUL" , "S" , Nil } )
AAdd( aCab, { "F2_TIPODOC", "21" , Nil } )
AAdd( aCab, { "F2_USOCFDI", "P01" , Nil } )
AAdd( aCab, { "F2_TPCOMPL", "S" , Nil } )
AAdd( aCab, { "F2_APROFOL", "1" , Nil } )
AAdd( aCab, { "F2_CERTFOL", cCertFol , Nil } )
// Ítems de la factura
aLinha := {}
AAdd( aLinha, { "D2_COD" , cProd , Nil } )
AAdd( aLinha, { "D2_UM" , "UN" , Nil } )
AAdd( aLinha, { "D2_QUANT" , 1 , Nil } )
// AAdd( aLinha, { "D2_PRCVEN" , 0 , Nil } ) // En documento tipo transferencia no informar este campo, si se envía en cero será rechazado
// AAdd( aLinha, { "D2_TOTAL" , 0 , Nil } ) // Aplica el mismo criterio que precio unitario
AAdd( aLinha, { "D2_PESO" , 1 , Nil } )
AAdd( aLinha, { "D2_TES" , "518" , Nil } )
AAdd( aLinha, { "D2_ESPECIE", "NF " , Nil } )
AAdd( aItens, aLinha)
// ********** Carta porte **********
aCartaPorte := Array(4)
// Generales
aAdd( aCartaPorte[1], {"A1X_INTERN", "N"} )
aAdd( aCartaPorte[1], {"A1X_ENTSAL", "S"} )
aAdd( aCartaPorte[1], {"A1X_TRANSP", "01"} )
aAdd( aCartaPorte[1], {"A1X_PERSCT", "TPAF02"} )
aAdd( aCartaPorte[1], {"A1X_PERMIS", "132579"} )
aAdd( aCartaPorte[1], {"A1X_ASEGUR", "ASEMEX"} )
aAdd( aCartaPorte[1], {"A1X_POLIZA", "246800"} )
aAdd( aCartaPorte[1], {"A1X_VEHIC" , "00000001"} )
// Ubicaciones
aAdd( aCartaPorte[2], Array(2) )
aAdd( aCartaPorte[2][1], {"A1Y_TIPEST", "O"} )
aAdd( aCartaPorte[2][1], {"A1Y_RFCORI", "XAXX010101000"} )
aAdd( aCartaPorte[2][1], {"A1Y_NOMORI", "UBICACION ORIGEN"} )
aAdd( aCartaPorte[2][1], {"A1Y_FECSAL", CtoD("12/07/2022")} )
aAdd( aCartaPorte[2][1], {"A1Y_HRASAL", "12:00:00"} )
aAdd( aCartaPorte[2][1], {"A1Y_CALORI", "DIRECCION ORIGEN"} )
aAdd( aCartaPorte[2][1], {"A1Y_EXTORI", "1020"} )
aAdd( aCartaPorte[2][1], {"A1Y_EDOORI", "QUE"} )
aAdd( aCartaPorte[2][1], {"A1Y_CPORI" , "76000"} )
aAdd( aCartaPorte[2][1], {"A1Y_COLORI", "0001"} )
aAdd( aCartaPorte[2][1], {"A1Y_LOCORI", "01"} )
aAdd( aCartaPorte[2][1], {"A1Y_MUNORI", "014"} )
aAdd( aCartaPorte[2][1], {"A1Y_PAIORI", "MEX"} )
aAdd( aCartaPorte[2][2], {"A1Y_TIPEST", "D"} )
aAdd( aCartaPorte[2][2], {"A1Y_DISREC", 15} )
aAdd( aCartaPorte[2][2], {"A1Y_RFCORI", "XAXX010101000"} )
aAdd( aCartaPorte[2][2], {"A1Y_NOMORI", "UBICACION DESTINO"} )
aAdd( aCartaPorte[2][2], {"A1Y_FECSAL", CtoD("12/07/2022")} )
aAdd( aCartaPorte[2][2], {"A1Y_HRASAL", "16:00:00"} )
aAdd( aCartaPorte[2][2], {"A1Y_CALORI", "DIRECCION DESTINO"} )
aAdd( aCartaPorte[2][2], {"A1Y_EXTORI", "3004"} )
aAdd( aCartaPorte[2][2], {"A1Y_EDOORI", "QUE"} )
aAdd( aCartaPorte[2][2], {"A1Y_CPORI" , "76246"} )
aAdd( aCartaPorte[2][2], {"A1Y_COLORI", "0001"} )
aAdd( aCartaPorte[2][2], {"A1Y_MUNORI", "011"} )
aAdd( aCartaPorte[2][2], {"A1Y_PAIORI", "MEX"} )
// Operadores
aAdd( aCartaPorte[3], Array(1) )
aAdd( aCartaPorte[3][1], {"A1Z_OPERAD", "000001"} )
// Propietarios/Arrendadores
aAdd( aCartaPorte[4], Array(1) )
aAdd( aCartaPorte[4][1], {"AE0_TIPO" , "P"} )
aAdd( aCartaPorte[4][1], {"AE0_PARTE" , "PT01"} )
aAdd( aCartaPorte[4][1], {"AE0_TRANSP", "000001"} )
// Rutina automática
MSExecAuto( { |x,y,z,w| Mata467n(x,y,z,,,,w) }, aCab, aItens, 3, aCartaPorte ) //3-Incluir, 5-Excluir e 6-Cancelar
If lMsErroAuto
MsgStop("Error en la grabación de la factura con carta porte.")
MostraErro()
Else
MsgAlert("Factura incluida con éxito.")
EndIf
Return
|
Informações | ||
---|---|---|
| ||
Considerar los siguientes criterios sobre los datos para la factura de tipo Traslado y para la Carta Porte: Los campos considerados en el ejemplo son los esenciales para la aceptación de la factura así como para la generación del CFDI. Encabezado de la factura
Ítems de la factura
Carta Porte
Todos los campos se validan con las mismas reglas que en la captura manual, incluso aquellos que no son obligatorios. Para detalles, consulte el documento técnico cuyo enlace se encuentra la sección 05. Asuntos relacionados. |
Card documentos Informacao Esta solución aplica para ambiente con CFDI versión 3.3 o 4.0. Titulo ¡IMPORTANTE!
...
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas