Histórico da Página
...
Nota: La actualizaciones presentadas a continuación son compatibles con versiones mayor o igual a 11.0
Rutinas | Fecha Actualización |
---|---|
MATA486.PRW | 19/02/2019 |
- Registrar una factura de venta; SIGAFAT | Actualizaciones | Facturación | Facturaciones.
- Transmitir la factura capturada; SIGAFAT | Actualizaciones | Facturación | Documentos Electrónicos.
- Visualizar el archivo XML recibido del servicio web de TFHKA, si el campo extensible tiene un código que corresponda a la "Tabla de códigos para campos extensibles", ese campo estará incluido en el nodo que le corresponda (receptor, encabezado, detalle, etc). Por otra parte, si es un campo "libre", éste se incorpora en el nodo ExtensionContent en la raíz del archivo XML.
...
c) Ejemplo de documento electrónico en PDF generado por TFHKA con campos extensibles
2.3 comercio exterior
2.3.1 Visión General
Desarrollar funcionalidad para que al transmitir los documentos de exportación genere de forma automática los campos extensibles relacionados a TRM.
Actualmente al momento de intentar Transmitir una Factura de Exportación (Cliente con A1_EST = EX), se obtiene la respuesta "109-[Linea 02 Factura General] El campo TRM es un campo compuesto requerido para Facturas de Exportación, debe enviar los códigos 81,83,84,85".
2.3.2 Ejemplo de utilización
Configuraciones previas:
- Cliente extranjero; Campo de estado (A1_EST) igual a "EX".
- El campo Moneda DIAN (CTO_MOESAT) de la moneda contable "01" debe ser diferente a la Moneda del documento (F2/F1_MOEDA).
Pasos para validar la solución:
- Acceda a la rutina de facturación; SIGAFAT | Actualizaciones | Facturación | Facturación (MATA467N).
- Registre una Factura de Exportación. - Acceda a la rutina de transmisión; SIGAFAT | Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486).
- Seleccione la opción Otras Acciones | Transmitir.
- Especifique los parámetros del proceso y confirme.
- El sistema indicará que la transmisión fue exitosa.
- Desde la ruta de facturas autorizadas, visualice el archivo XML recibido del proveedor tecnológico. Verifique la existencia del nodo cac:PaymentExchangeRate el cual contiene los campos TRM:
Punto de entrada M486CEXT - Campos extensibles.
Ejemplo de generación de los campos correspondientes a TRM (81, 83, 84 y 85):
#Include "Protheus.ch"
#Include "rwmake.ch"
User Function M486CEXT()
Local aArea := getArea()
Local aAreaSA1 := SA1->(GetArea())
Local aAreaSF1 := SF1->(GetArea())
Local aAreaSF2 := SF2->(GetArea())
Local aCampos := {}
Local cSerie := ParamIXB[1,1]
Local cFactura := ParamIXB[1,2]
Local cCliente := ParamIXB[1,3]
Local cLoja := ParamIXB[1,4]
Local cEspecie := ParamIXB[2]
Local cEst := ""
Local cTxMoeda := ""
dbSelectArea("SA1")
dbSetOrder(1)
dbSeek(xFilial("SA1")+cCliente+cLoja)
If !Empty(SA1->A1_CONTATO)
aAdd( aCampos , {"Destinatario", "", "48", "1", Alltrim(SA1->A1_CONTATO), "1"} )
EndIf
If !Empty(SA1->A1_HPAGE)
aAdd( aCampos , {"Pagina web", "", "1", "1", Alltrim(SA1->A1_HPAGE), "1"} )
EndIf
SA1->(RestArea(aAreaSA1))
If Alltrim(cEspecie) $ "NF|NDC"
dbSelectArea("SF2")
dbSetOrder(1)
dbSeek(xFilial("SF2")+cFactura+cSerie)
cEst := SF2->F2_EST
cTxMoeda := Alltrim(Str(SF2->F2_TXMOEDA))
SF2->(RestArea(aAreaSF2))
Else
dbSelectArea("SF1")
dbSetOrder(1)
dbSeek(xFilial("SF1")+cFactura+cSerie)
cEst := SF1->F1_EST
cTxMoeda := Alltrim(Str(SF1->F1_TXMOEDA))
SF1->(RestArea(aAreaSF1))
EndIf
If cEst == "EX"
aAdd( aCampos , {"Tasa de Cambio" , "", "81", "1", "" , "1"} )
aAdd( aCampos , {"Moneda Origen" , "", "83", "1", "USD" , "1"} )
aAdd( aCampos , {"Moneda Final" , "", "84", "1", "COP" , "1"} )
aAdd( aCampos , {"Valor del Calculo", "", "85", "1", cTxMoeda, "1"} )
Endif
RestArea(aArea)
Return aCampos
Scripts de generación de documentos electrónicos (archivos XML).
Las modificaciones realizadas son para el correcto manejo de campos cuando el cliente es persona física. En el nodo fe:AccountingCustomerParty (datos del receptor) se incluye uno de los siguientes subnodos dependiendo del tipo de persona:
Tipo de persona | Subnodo | Atributo | Contenido | Descripción |
---|---|---|---|---|
Jurídica | fe:PartyLegalEntity | cbc:RegistrationName | A1_NOME | Razón social / Nombre completo |
Física | fe:Person | cbc:FirstName | A1_NOMEPRI | Primer nombre |
cbc:MiddleName | A1_NOMEPES | Segundo nombre | ||
cbc:FamilyName | A1_NOMEPAT | Segundo apellido |