01. DATOS GENERALES
Producto | TOTVS Backoffice | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | ||||||||||||||||||
Segmento: | Backoffice | ||||||||||||||||||
Módulo: | SIGAFAT - Facturación | ||||||||||||||||||
Función: |
| ||||||||||||||||||
País: | COL (Colombia) | ||||||||||||||||||
Ticket: | 23094663 | ||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMICNS-23033 |
02. SITUACIÓN/REQUISITO
Al momento de realizar la transmisión de un Documento Soporte o Nota de Ajuste (Crédito | Débito) en moneda extranjera, se requiere que el sistema pueda realizar las conversiones a moneda nacional (COP) de todos los montos del documento.
Acorde a la resolución 00165 DIAN mencionando los cambios para la integración del Anexo 1.9, no es obligatorio para Documento Soporte y Notas de Ajuste realizar la conversión a moneda nacional (COP), sin embargo existen varios clientes que quieren transmitir dichos documentos con sus montos en moneda nacional.
Se creará un parámetro para que el usuario pueda transmitir Documento Soporte y Notas de Ajuste en moneda nacional (COP) o en moneda extrajera según lo requiera.
Sustento Legal
Documentación The Factory:
Reglas de rechazo anexo técnico V 1.9 -Cambios Integración Anexo V 1.9
Resolución:
03. SOLUCIÓN
En la rutina de Funciones Genéricas de Documentos Electrónicos (M486XFUN):
- En la función encargada de generar los nodos de los impuestos (fgetaxas) y en la función encargada de generar los nodos del detalle de la factura (fGetTaxDet), se realiza el ajuste para considerar el nuevo parámetro MV_CONVEXP para que se realice la conversión de montos a moneda nacional (COP) cuando el valor del parámetro es igual a ".T."; para Documento Soporte y Notas de Ajuste Crédito/Débito.
En la rutina de Funciones Genéricas de Facturación Electrónica de Colombia (M486XFUNCO):
- En la función para llenado de oWSfactura solicitado por TheFactory HKA, con datos obtenidos del XML (M486XMLHKA), se realiza el ajuste para considerar el nuevo parámetro MV_CONVEXP, para que se realice la conversión de montos a moneda nacional (COP) cuando el valor del parámetro es igual a ".T." para Documento Soporte y Notas de Ajuste Crédito/Débito.
- Realizar un respaldo del repositorio del ambiente (archivo .rpo).
- Aplicar el parche del issue DMICNS-23033
- Validar que las rutinas especificadas en la sección 01. DATOS GENERALES se hayan actualizado con una fecha igual o superior a la mencionada.
- Contar con el parámetro MV_CONVEXP informado con el valor .T..
- Realizar un respaldo del archivo FATSECOL.INI que se encuentra en la ruta configurada en el parámetro MV_CFDFTSE.
- Actualizar el archivo FATSECOL.INI que viene anexo en la carpeta del parche, en la ruta configurada en el parámetro MV_CFDFTSE.
- Configurar los ajustes al Diccionario de Datos de acuerdo a lo mencionado en la sección 04. INFORMACIÓN ADICIONAL.
- En el módulo Compras (SIGACOM):
- Desde el Actualizaciones | Movimientos | Factura de Entrada,
- Registrar un Documento Soporte en moneda extranjera.
- Desde el Actualizaciones | Movimientos | Nota Cred/Debito,
- Registrar la nota de ajuste crédito en moneda extranjera del documento soporte previamente registrado
- Registrar la nota de ajuste débito en moneda extranjera del documento soporte previamente registrado
- Desde el Actualizaciones | Movimientos | Factura de Entrada,
En el módulo Facturación (SIGAFAT):
- Ir al menú Actualizaciones | Facturación | Transmisión Electrónica (MATA486).
- Realizar la transmisión del Documento Soporte en Moneda extranjera (Validar que la transmisión haya sido exitosa)
- Desde Otras acciones ejecutar la acción Imprimir PDF.
- Validar que en el formato PDF, los montos se muestren en moneda COP, y que se visualice la información en la moneda origen y moneda destino del Documento.
En el módulo Facturación (SIGAFAT):
- Ir al menú Actualizaciones | Facturación | Transmisión Electrónica (MATA486).
- Realizar la transmisión de la Nota de Ajuste Débito (Validar que la transmisión haya sido exitosa)
- Desde Otras acciones ejecutar la acción Imprimir PDF.
- Validar que en el formato PDF, los montos se muestren en moneda COP, y que se visualice la información en la moneda origen y moneda destino del Documento.
En el módulo Facturación (SIGAFAT):
- Ir al menú Actualizaciones | Facturación | Transmisión Electrónica (MATA486).
- Realizar la transmisión de la Nota de Ajuste Crédito (Validar que la transmisión haya sido exitosa)
- Desde Otras acciones ejecutar la acción Imprimir PDF.
- Validar que en el formato PDF, los montos se muestren en moneda COP, y que se visualice la información en la moneda origen y moneda destino del Documento.
04. INFORMACIÓN ADICIONAL
Archivo FATSCOL.INI:
Se requiere editar el script actual de generación de archivo XML, actualizando las secciones de acuerdo al siguiente modelo, en donde se agregaron o fueron modificadas líneas para integrar esta nueva funcionalidad.
FATSCOL.INI
En el apartado de [XXX INICIALIZACION] agregar la validación para comprobar los documentos para los cuales se va a realizar la conversión de moneda:
(PRE) _aTotal[091] := _aTotal[033]$"NF|NDC" .Or.(SuperGetMV("MV_CONVEXP",.F.,.F.) .and. (SF2->(ColumnPos("F2_MARK")) > 0 .and. SF2->F2_MARK =='S'))
En el apartado de [XXX RECEPTOR], agregar los ajustes para generar correctamente los nodos SourceCurrencyCode,SourceCurrencyBaseRate y TargetCurrencyCode:
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyCode>' + Iif(_aTotal[091],"COP",Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") )) + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyBaseRate>' + Iif(_aTotal[091] ,Alltrim(Str(SF2->F2_TXMOEDA,11,2)),"1.00") + '</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:TargetCurrencyCode>' + Iif(_aTotal[091],Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ),"COP") + '</cbc:TargetCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
En la sección de [SD2 INVOICE], agregar los ajustes para generar correctamente los nodos cbc:LineExtensionAmount, cac:AllowanceCharge\cbc:Amount y fe:Price\cbc:PriceAmount
(PREREG) (_aTotal[001] += ' <cbc:LineExtensionAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(IIf(AllTrim(_aTotal[091].And. SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_TOTAL,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_TOTAL),14,2)) +'</cbc:LineExtensionAmount>' + ( chr(13)+chr(10) ),.T.)
(PREREG) (_aTotal[001] += ' <cbc:PriceAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(IIf(_aTotal[091].And. SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_PRCVEN,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_PRCVEN),14,2)) +'</cbc:PriceAmount>' + ( chr(13)+chr(10) ),.T.)
(PREREG) (_aTotal[001] += IIF(SD2->D2_DESCON > 0, ' <cbc:Amount currencyID="' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF2->F2_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(IIf(_aTotal[091] .And. SF2->F2_MOEDA<>1,Round(xMoeda(SD2->D2_DESCON,SF2->F2_MOEDA,1,,MsDecimais(1)+1,SF2->F2_TXMOEDA),MsDecimais(1)),SD2->D2_DESCON),14,2)) + '</cbc:Amount>' + chr(13)+chr(10), ""),.T.)
Archivo FATECOL.INI:
Se requiere editar el script actual de generación de archivo XML, actualizando las secciones de acuerdo al siguiente modelo, en donde se agregaron o fueron modificadas líneas para integrar esta nueva funcionalidad.
FATECOL.INI
En el apartado de [XXX INICIALIZACION] agregar la validación para comprobar los documentos para los cuales se va a realizar la conversión de moneda:
(PRE) _aTotal[091] := _aTotal[033] == "NCC" .Or. (SuperGetMV("MV_CONVEXP",.F.,.F.) .and. ((SF1->(ColumnPos("F1_SOPORT")) > 0 .and. SF1->F1_SOPORT =='S') .Or. (SF1->(ColumnPos("F1_MARK")) > 0 .and. SF1->F1_MARK =='S')))
En el apartado de [XXX RECEPTOR], agregar los ajustes para generar correctamente los nodos SourceCurrencyCode,SourceCurrencyBaseRate y TargetCurrencyCode:
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyCode>' + Iif(_aTotal[091],"COP",Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") )) + '</cbc:SourceCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:SourceCurrencyBaseRate>' + Iif(_aTotal[091] ,Alltrim(Str(SF1->F1_TXMOEDA,11,2)),"1.00") + '</cbc:SourceCurrencyBaseRate>' + ( chr(13)+chr(10) ) , "" )
(PRE) _aTotal[001] += IIf( _aTotal[109] <> "COP" , ' <cbc:TargetCurrencyCode>' + Iif(_aTotal[091],Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ),"COP") + '</cbc:TargetCurrencyCode>' + ( chr(13)+chr(10) ) , "" )
En la sección de [SD1 INVOICE], agregar los ajustes para generar correctamente los nodos cbc:LineExtensionAmount, cac:AllowanceCharge\cbc:Amount y fe:Price\cbc:PriceAmount
(PREREG) (_aTotal[001] += ' <cbc:LineExtensionAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + Alltrim(Str(IIf(_aTotal[091] .And. SF1->F1_MOEDA<>1,Round(xMoeda(SD1->D1_TOTAL,SF1->F1_MOEDA,1,,MsDecimais(1)+1,SF1->F1_TXMOEDA),MsDecimais(1)),SD1->D1_TOTAL))) +'</cbc:LineExtensionAmount>' + ( chr(13)+chr(10) ),.T.)
(PREREG) (_aTotal[001] += IIF(SD1->D1_VALDESC > 0, ' <cbc:Amount currencyID="' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '">' + Alltrim(Str(IIf(_aTotal[091] .And. SF1->F1_MOEDA<>1,Round(xMoeda(SD1->D1_VALDESC,SF1->F1_MOEDA,1,,MsDecimais(1)+1,SF1->F1_TXMOEDA),MsDecimais(1)),SD1->D1_VALDESC))) + '</cbc:Amount>' + chr(13)+chr(10), ""),.T.)
(PREREG) _aTotal[090] := Alltrim(IIf(_aTotal[091] .And. SF1->F1_MOEDA<>1,Str(Round(xMoeda(SD1->D1_VUNIT,SF1->F1_MOEDA,1,,MsDecimais(1)+1,SF1->F1_TXMOEDA),MsDecimais(1)),14,2),Str(SD1->D1_VUNIT,14,2)))
(PREREG) (_aTotal[001] += ' <cbc:PriceAmount currencyID=' + '"' + Alltrim( Posicione("CTO",1,xFilial("CTO")+Strzero(SF1->F1_MOEDA,2),"CTO_MOESAT") ) + '"' + '>' + _aTotal[090] +'</cbc:PriceAmount>' + ( chr(13)+chr(10) ),.T.)
Parámetros en el archivo SX6 – Parámetros:
Nombre de la Variable | MV_CONVEXP |
Tipo | Lógico |
Descripción | Parámetro para activar la conversión a moneda nacional (COP) al momento de transmitir Documento Soporte y Notas de Ajuste Crédito\Débito. |
Valor Estándar | .F. |
Pacote Diccionario (uso exclusivo interno)
Código: 015412
Pacote: MI - DMICNS-23033 - COL PARÁMETRO MV_CONVEXP
¡IMPORTANTE!
La presente solución aplica para versión 12.1.2210 o superior, y es necesario tener activa la funcionalidad de transmisión electrónica.
05. ASUNTOS RELACIONADOS
- documento_tecnico
- mi
- mercado_internacional
- base_conocimiento
- col
- colombia
- sigafat
- mv_convexp
- conversion_moneda
- cop
- usd
- documento_soporte
- nf
- sd1
- sf1
- dmicns_23033
- ticket_23094663
- 23094663
- v_12_1_2210
- v_12_1_2310
- v_12_1_2410
- facturacion
- anexo_19
- dian
- transmision_electronica
- totvs_backoffice
- backoffice
- base_de_conocimiento
- version_12_1_2210
- version_12_1_2310
- version_12_1_2410
- protheus_backoffice
- protheus
- linea_protheus