Línea de producto: | Microsiga Protheus. | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Segmento: | Servicios - Mercado Internacional. | ||||||||||||
Módulo: | SIGAFAT - Facturación. | ||||||||||||
Función: |
| ||||||||||||
Ticket: | 5473256 | 5525395 | ||||||||||||
Requisito/Story/Issue: | DMINA-6420 | DMINA-6480 (DMINA-6497) | ||||||||||||
Versión: | 11.8 | 12.1.17 | 12.1.23 |
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".
Al parecer está siendo requerido el campo TRM, por lo cual se solicita que sea evaluada la inclusión de esta información por estándar.
Desarrollar funcionalidad para que al transmitir los documentos de exportación genere de forma automática los campos extensibles relacionados a TRM.
Configuraciones previas:
Pasos para validar la solución:
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 |