Tempo aproximado para lectura: 00:05:00 min
Ocurrencia
En el módulo de facturación, al momento de intentar transmitir una factura de exportación con un cliente con A1_EST = EX), desde la rutina MATA486, 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"
Ambiente
Cross Segmentos - TOTVS BackOffice (Línea Protheus) - MI - Facturación (SIGAFAT) - 12
Causa
En el ambiente no existe la funcionalidad para que al transmitir los documentos de exportación genere de forma automática los campos extensibles relacionados a TRM
Solución
Para solucionar esta incidente se debe tener un cliente extranjero, con el 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);
- Registre una Factura de Exportación desde la rutina Facturación - MATA467N
- Transmita la factura electrónica desde la rutina 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
a) Ejemplo de 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:
0 Comentarios