Árvore de páginas

01. DATOS GENERALES


Producto

TOTVS Backoffice

Línea de producto: 

Línea Protheus

Segmento:

Backoffice

Módulo:SIGACOM - Compras
Función:
Rutina(s)Nombre TécnicoFecha
MATA486.PRWDocumentos Electrónicos26/09/2022
M486XFUNCO.PRWFunciones genéricas para transmisión de Documentos Electrónicos26/09/2022
M486PDFCOL.PRWGeneración de Factura Electrónica en PDF26/09/2022
LOCXNF.PRWNotas Fiscales26/09/2022
LOCXNF2.PRW

Funciones genéricas de Documentos Fiscales

26/09/2022
LOCXCOL.PRWFunciones Genéricas de Notas Fiscales Colombia26/09/2022
LOCXGEN.PRWComponentes de Ventanas en Notas Fiscales26/09/2022
SIGACUS.PRWFunciones Genéricas para Documentos Fiscales23/09/2022
LOCXFUNA.PRXFunciones Genéricas para Notas Fiscales26/09/2022
M486XFUN.PRWFunciones genéricas de Facturación Electrónica 26/09/2022


Archivos de Configuración

ArchivoNombre TécnicoFecha
FATECOL.INIGeneración de XML para Documentos de Entrada26/09/2022
FATSCOL.INIGeneración de XML para Documentos de Salida26/09/2022



País:Colombia
Ticket:14655123
Requisito/Story/Issue (informe el requisito vinculado):DMINA-16565


02. SITUACIÓN/REQUISITO


Las notas de ajuste son documentos electrónicos o físicos según el caso, que constituyen el medio por el cual se realizan ajustes o se anula el documento soporte, por errores aritméticos o de contenido, cumpliendo las condiciones, términos, mecanismos técnicos y tecnológicos que para el efecto señale la DIAN conforme al contenido del anexo técnico previsto en el artículo 17 de la Resolución 000167 de 2021. https://www.dian.gov.co/normatividad/Normatividad/Resoluci%C3%B3n%20000167%20de%2030-12-2021.pdf

Realizar las modificaciones necesarias para generar Notas de Ajuste de tipo Débito o Crédito referenciadas únicamente a Documentos Soporte e implementar la Transmisión Electrónica para estos documentos.


03. SOLUCIÓN

Se realizan modificaciones a los siguientes Fuentes:

LOCXNF

    • En la función Mata466n() se asigna la función LxObTpCol() para obtener el tipo de documento. Si es Nota de Crédito de Ajuste se asigna el identificador  22, si es Nota de Débito de Ajuste se asigna el identificador 23.
    • En la función LocxDlgNF() se asignan los tipos de documento 22 y 23  (NCP y NDP de Ajuste) para el llenado de los Array’s internos.
      1. El tipo de documento NCP de Ajuste = 22 se asigna dónde se encuentra informado el tipo de documento  NCP Normal = 7.
      2. El tipo de documento NDP de Ajuste = 23 se asigna dónde se encuentra informado el tipo de documento NDP Normal = 9.
      3. Con la función lxVlTitulo() se obtienen los “Títulos” de Documento Soporte, Nota de Ajuste de Crédito o  Débito para que éstos sean mostrado en el encabezado de los Documentos.
    • En la función GravaNfGeral() se actualiza la numeración de las Notas de Ajuste en el archivo de tablas SX5.
    • Dentro de la función GravaCabNF() se asigna la función lxModDocSp() para marcar con ‘S’ los campos F1_SOPORT (Docto Soporte) , F1_MARK (NDP de Ajuste) y F2_MARK (NCP de Ajuste) cuando se crean los documentos.
    • En la función MontaCfgNf() se asigna la función lxEstrCol() para cargar la configuración de los documentos 22 y 23 (NCP y NDP de Ajuste) en el array aCfg.
    • En la función CarregaBotoes() se indican los botones que serán mostrados en los documentos 22 y 23 (NCP y NDP de Ajuste).
    • En la función CarregaTeclas() se asignan los identificadores que serán utilizados en los menús de los documentos 22 y 23 (NCP y NDP de Ajuste).
    • En la función MontaPE() se cargan los puntos de entrada para los documentos 22 y 23 (NCP y NDP de Ajuste).
    • En la función LocxVal() se asigna el control de folios y la cargar automática del número de documento (dependiendo la serie seleccionada) para los documentos NCP y NDP de Ajuste
    • En la función LocxDelNF() se asigna la función LxVldFact() para validar el borrado de las Notas de Ajuste (NCP y NDP). No se podrán borrar los documentos previamente trasmitidos, se notificará con un mensaje.
    • En la función PcoCarregaLancto() se cargan los asientos para el control presupuestario (PCO) para los documentos 22 y 23 (NCP y NDP de Ajuste).


LOCXNF2

    • Dentro de la función LxN466ForF6() se asigna la función lxObtnFltr() para filtrar los "Documentos Soporte" cuando se consultan desde la NCP o NDP de Ajuste mediante la opción "Factura".
    • En la función CarregaLanc() se cargan los  asientos estándar para la NCP y NDP de Ajuste.
    • Dentro de la función fValSerDoc() se agrega la NDP de Ajuste a la validación de los Folios.


LOCXCOL

    • Se realizan las siguientes modificaciones a la función LxCpoCol().
      1. Para las Notas de Crédito de Ajuste se agrega el campo Tipo Ajuste (F2_TIPNOTA), al campo Serie (F2_SERIE) se le agrega la consulta estándar “01” (muestra la serie y numeración relacionada a las Notas de Ajuste) y al campo Proveedor (F2_CLIENTE) se le agrega la función LxVlCabCol() para validar el Proveedor vs Cliente.
      2. Para las Notas de Débito de Ajuste se agrega el campo Tipo Ajuste (F1_TIPNOTA), al campo Serie (F1_SERIE) se le agrega la consulta estándar “01” (muestra la serie y numeración relacionada a las Notas de Ajuste) y al campo Proveedor (F1_FORNECE) se le agrega la función LxVlCabCol() para validar el Proveedor vs Cliente.
    • Se modifica la función LxVldFact(), se asigna retorno lógico y se agrega el parámetro por referencia lNotAjus, éste valor se utiliza para indicar si el documento es una Nota de Ajuste (NCP o NDP) y validar el borrado para indicar si el documento fue previamente transmitido.
    • Se modifica la función LxVlCabCol(), se asigna la validación de Proveedor vs Cliente para las Notas de Ajuste.
    • Se modifica la función fSerDocCol() se asigna la Nota de Ajuste de tipo NDC a la validación del control del Folios.
    • Se modifica la función ColExSer2(), se asigna la función LxSer2DsNa() para obtener la serie 2 del Documento Soporte y las Notas de Ajuste (NCP y NDP).
    • Se crean las siguientes Funciones:
      1. lxChckLock(): En las Notas de Ajuste NCP y NDP, cuando es seleccionado el Documento Soporte desde la opción "Factura", se valida que el documento se encuentre transmitido.
      2. lxObtnFltr(): En las Notas de Ajuste NCP y NDP, cuando es seleccionada  la opción "Factura" filtra solo los Documentos Soporte.
      3. lxVlTitulo(): Obtiene los “Títulos” de Documento Soporte, Nota de Ajuste de Crédito o Débito para que éstos sean mostrado en el encabezado de los Documentos.
      4. lxVlDcTrns(): En las Notas de Ajuste NCP. cuando se selecciona la opción "Doc Orig", valida que el Documento Soporte seleccionado se encuentre transmitido. 
      5. lxModDocSp(): Asigna el identificador 'S' para Documento Soporte y Notas de Ajuste NCP y NDP cuando se guarda el Documento.
      6. lxEstrcCol: Cargar la configuración de las Notas de Ajuste NCP y NDP en el array aCfg.
      7. LxSer2DsNa(): Asigna la serie 2 para Documento Soporte y Notas de Ajuste NCP y NDP.
      8. LxObtTpCol(): Asigna el tipo de documento para las Notas de Ajuste (NCP = 22, NDP = 23).


SIGACUS

    • Se modifica la función F4NfOri(),
      1. Se asigna la función lxObtnFltr() para filtrar los Documentos Soporte desde las Notas de Crédito de Ajuste cuando se utiliza la opción “Doc. Orig” .
      2. Se asigna la función lxVlDcTrns() para validar si el documento seleccionado ya fue transmitido.


LOCXGEN

    • Dentro de la función LockClick(), se asigna la función lxChckLock() para validar que el Documento Soporte seleccionado se encuentre transmitido.

LOCXFUNA

    • En la función CFDGerXml() se asigna la especie NDP para inicializar la tabla SF1 y realizar la generación del XML de la Nota de Ajuste de Débito.

MATA486

    • Se modifica la función Mata486()
      1. Obtiene el tipo de documento, si es Nota de Crédito de Ajuste se asigna el identificador 9, si es Nota de Débito de Ajuste se asigna el identificador 8.
      2. Se valida que la pregunta ¿Tipo Nota Ajuste? contenga las opciones “Débito” o “Crédito” cuando la pregunta ¿Tipo de Documento? contenga la opción “Nota de Ajuste”. 
    • Se modifica la función M486VldDoc() 
      1. Asigna el filtro F1_MARK / F2_MARK = ‘S’ para obtener los documentos de tipo Nota de Ajuste NDP o NDC y estos sean mostrados en pantalla.
      2. Se obtiene el Cliente a partir del Proveedor para las Notas de Ajuste NCP y NDP.
    • En la función M486GetInf() se asigna el filtro F1_MARK / F2_MARK = ‘S’ para obtener información y preparar la trasmisión de los documentos de tipo Nota de Ajuste NDP y NDC.
    • En la función M486VisNFE() se asigna la visualización de las Notas de Ajuste NDP y NDC.
    • En la función M486BRWSFX() se asigna la configuración (Tipo Documento, Filtros, tablas, Preguntas etc..) de las Notas de Ajuste NDP y NDC para la configuración del Browse principal.
    • En la función M486SENDPT() se asigna el prefijo “n” cuando el documento es una Nota de Ajuste NDP o NDC, este prefijo se incluye en el nombre del documento electrónico (archivo XML) y también sirve para asignar los elementos principales (FE_INVOICE, FE_ITEM etc..) que posteriormente serán integrados en el documento electrónico (archivo XML).

M486XFUN

    • En la función FGetTaxas() se integran las Notas de Ajuste NDP y NDC para obtener los impuestos.
    • Se modifica la función fGetRef()
      1. Se agrega el parámetro por referencia cTipNota, éste valor se informa desde los archivos FATSCOL.ini y FATECOL.ini y contiene el concepto de ajuste.
      2. Se integran las Notas de Ajuste (NCP y NDP) y se obtienen los datos del documento referenciado (Documento Soporte).


M486XFUNCO

    • Se modifica la función M486XMLHKA()
      1. Se asigna el prefijo “n” cuando el documento es una Nota de Ajuste NDP o NDC, este prefijo se incluye en el nombre del documento electrónico (archivo XML) y también sirve para asignar los elementos principales (FE_INVOICE, FE_ITEM etc..) que posteriormente serán leídos y asignados al documento electrónico (archivo XML).
      2. Se obtiene el Cliente a partir del proveedor para las Notas de Ajuste NCP/NDP.
      3. Se asigna el parámetro lNotAjus a la función M486RefDoc().
      4. Se asigna el tipo documento 95 para las Notas de Ajuste.
    • En la función M486RefDoc() se agrega el parámetro por referencia lNotAjus que indicará si serán informados los elementos relacionados al documento referenciado (Documento Soporte).


M486PDFCOL

    • En la Función ImpXMlPDF() se asigna condición para obtener documentos de tipo “Notas de Ajuste”.


FATECOL

    • Se crea la variable lógica _aTotal[117] para indica si es una Nota de Ajuste y utilizar los datos del Cliente (SA1)  relacionado al Proveedor(SA2). También se utiliza la variable lógica _aTotal[117] para asignar los nodos relacionados a la Factura (ejemplo: fe:InvoiceLine, fe:Item, fe:Price etc..)
    • Se crea la variable _aTotal[089] que almacena el concepto de las Notas de Ajuste y se asigna a la función fGetRef () donde será informado en el XML.
    • En la variable  _aTotal[105] se almacena el identificador “n” cuando la variable _aTotal[117] es verdadera (Nota de Ajuste )
    • Para complementar la consulta realizada en la función FsQuery() en el filtro de la tabla SFP se indica la especie “9” Nota de Ajuste de tipo Débito.
    • Cuando se utiliza la función fGetTaxDet() se indica que es un documento “NCC” para obtener los valores de las tablas de Impuestos Variables (SFB), TES vs. Impuestos(SFC), Encabezado de Factura (SF1)  y de Detalle de Factura (SD1).

FATSCOL

    • Se crea la variable lógica _aTotal[116] para indica si es una Nota de Ajuste y utilizar los datos del Cliente (SA1)  relacionado al Proveedor(SA2). También se utiliza la variable lógica _aTotal[116] para asignar los nodos relacionados a la Factura (ejemplo: fe:InvoiceLine, fe:Item, fe:Price etc..).
    • Se crea la variable _aTotal[117] que almacena el concepto de las Notas de Ajuste y se asigna a la función fGetRef () donde será informado en el XML.
    • En la variable  _aTotal[105] se almacena el identificador “n” cuando la variable _aTotal[116] es verdadera (Nota de Ajuste )
    • Para complementar la consulta realizada en la función FsQuery() en el filtro de la tabla SFP se indica la especie “8” Nota de Ajuste de tipo Crédito.
    • Cuando se utiliza la función fGetTaxDet() se indica que es un documento “NDC” para obtener los valores de las tablas de Impuestos Variables (SFB), TES vs. Impuestos(SFC), Encabezado de Factura (SF2)  y de Detalle de Factura (SD2).


  1. Realizar un respaldo del repositorio (RPO).
  2. Aplicar el parche correspondiente al issue DMINA-16565.
  3. Validar que las rutinas actualizadas en el repositorio, coincidan con las descritas en el encabezado del presente Documento Técnico, así como las fechas.
  4. Contar con la configuración mencionada en el Documento Técnico de la sección 05. ASUNTOS RELACIONADOS.
  1. Documento Soporte.
    • Ingresar al módulo de Compras (SIGACOM), ir al menú |Actualizaciones | Movimientos | Factura de Entrada (MATA101N).
    • Crear un Documento Soporte.
    • Transmitir los documentos.

  2. Nota Ajuste de Crédito.
    • Ingresar al módulo de Compras (SIGACOM), ir al menú | Actualizaciones | Movimientos | Nota Crédit/Débito (MATA466N).
    • En la pregunta ¿Formulario Propio? seleccionar “Si”.
    • En la pregunta ¿Tipo de Factura? seleccionar “Nota Ajuste Créd” o “Nota Ajuste Débi
    • Confirmar dando clic en el botón "OK".
    • Dar clic en el botón “Incluir”.
    • Seleccionar al Proveedor que está relacionado al Cliente.
    • Seleccionar la Serie configurada para la Nota de Ajuste, automáticamente se cargará el Número Documento y la Serie 2.
    • Seleccionar el Tipo de Ajuste (Concepto de Corrección para Notas de Ajuste).
    • Referenciar un Documento Soporte por medio del menú "Otras Acciones" opciones "Factura" o "Doc. Orig"

    • Guardar la Nota de Ajuste.

  3. Transmisión de Nota de Ajuste. 
    • Ingresar al módulo de Facturación (SIGAFAT), ir el menú |Actualizaciones | Facturación | Transmitir Factura Electrónica (MATA486).
    • Capturar los parámetros correspondientes para realizar el filtro de documentos.
      ¿Tipo de Documento? seleccionar “Nota de Ajuste”.
      ¿Serie? seleccionar “NAJ”.
      ¿Estatus? seleccionar “0” para obtener todos los documentos.
      Asignar las Fechas Inicio/Fin.
      ¿Tipo Nota Ajuste? seleccionar “Crédito” o "Débito".

    • Confirmar.
    • En la pantalla principal verificar que exista la Nota de Ajuste Crédito o Débito.
    • Dar clic en el botón “Transmitir”.
    • Asignar la serie “NAJ” y el Número de Documento Inicial y Final.
    • Confirmar Transmisión.
    • Revisar el Log de transmisión.


      Para mas información acceder al Documento Técnico de la sección 05. ASUNTOS RELACIONADOS.


04. INFORMACIÓN ADICIONAL


¡IMPORTANTE!

Los cambios al diccionario de datos fueron incorporados en el pacote "011023". La presente solución aplica para versiones 12.1.33 o superiores.


05. ASUNTOS RELACIONADOS

  • DT Nota de Ajuste para Documentos Soporte COL