01. DATOS GENERALES
Producto | TOTVS Backoffice | |||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Línea de producto: | Línea Protheus | |||||||||||||||||||||||||||
Segmento: | Backoffice | |||||||||||||||||||||||||||
Módulo: | SIGAFAT - Facturación | |||||||||||||||||||||||||||
Función: |
| |||||||||||||||||||||||||||
País: | México | |||||||||||||||||||||||||||
Ticket: | No aplica | |||||||||||||||||||||||||||
Requisito/Story/Issue (informe el requisito vinculado): | DMINA-22522 |
02. SITUACIÓN/REQUISITO
Realizar el ajuste temporal a la rutina que actualiza el status de la factura para poder simular en un ambiente de pruebas todo el proceso de cancelación de Factura de Venta fuera de periodo.
03. SOLUCIÓN
- En la rutina de Cancelación CFDI (FISA817) se realizan las siguientes modificaciones:
- En la función ProcesoWS() se agrega una validación que identifica si la factura que se está consultando esta fuera de periodo (emitida dentro del mismo año, con mes de emisión menor al mes de cancelación), de ser así, la factura es marcada mediante el array aRegs.
En la función ActualizaDoc() se agrega una validación que identifica si el documento que está siendo consultado esta fuera de periodo, de ser así, el documento es marcarlo con estatus cancelable sin aceptación.
Los cambios realizados en la rutina FISA817 son exclusivos para el proyecto piloto.
- En la rutina de Funciones Genéricas de Documentos Fiscales (LOCXFUNA) se realizan las siguientes modificaciones:
En la función LxChkNumNF() se asigna una validación para identificar si el sistema está en transacción utilizando la función InTransact() y proteger la llamada a la función MsRUnLock() para evitar errores.
Las rutinas indicadas en el presente documento técnico fueron actualizadas con las siguientes versiones de la branch Master:
Rutina ChangeSet LOCXNF 223421 LOCXNF2 222478 LOCXMEX 228887 FISA817 197472 TIPODOC 220728 INPUTFIELDSALL 228691 FISA800 193237 LOCXFUNA 219918 Las rutinas finales se encuentran en la branch de innovación (/Inovacao/projetos_areas/Localizacoes/Materiais/CANCEL_FAC_PILOTO)
- Realizar un respaldo del repositorio (archivo .rpo)
- Aplicar el parche correspondiente al issue DMINA-22522.
- Validar que las rutinas actualizadas coincidan con las indicadas en la sección 01. Datos Generales del presente Documento Técnico.
- Contar con la configuración de la Facturación Electrónica para México: DT Facturación Electrónica para México de Comprobantes Fiscales Digitales por Internet (CFDI) Versión 4.0
- Contar con la configuración de la Cancelación de la Factura Electrónica fuera de periodo para México: DT Cancelación de Factura Electrónica fuera de periodo MEX
Realizar las siguientes modificaciones al archivo de configuración FATSMEX.INI:
Dentro del apartado [XXX INICIALIZACION] agregar las líneas que se indican en color verde y sustituir las líneas que se indican en color azul.[XXX INICIALIZACION]
(PRE) SD2->(DbSetOrder(1))
(PRE) SB1->(DbSetOrder(1))
(PRE) SYA->(DbSetOrder(1))
(PRE) SC6->(DbSetOrder(1))
(PRE) SE4->(DbSetOrder(1))
(PRE) CTO->(DbSetOrder(1))
(PRE) SAH->(DbSetOrder(1))
(PRE) _aTotal[009] := SuperGetMV("MV_CFDICPG", .F., "")
(PRE) _aTotal[010] := FindFunction("zh_FechaHoraUTC") .And. !Empty(_aTotal[009])
(PRE) _aTotal[011] := FindFunction("LxFunaCaPo")
(PRE) _aTotal[094] := ""
(PRE) _aTotal[095] := ""
(PRE) _aTotal[033] := ""
(PRE) _aTotal[034] := ""
(PRE) _aTotal[035] := ""
(PRE) _aTotal[036] := 0
(PRE) _aTotal[037] := 0
(PRE) _aTotal[038] := 0
(PRE) _aTotal[039] := SuperGetMV("MV_CFDIEXP",.F.,.F.)
(PRE) _aTotal[040] := date() - 7
(PRE) _aTotal[075] := Alltrim(SM0->M0_NOMECOM)
(PRE) _aTotal[076] := ((_aTotal[039] .And. !Empty(SF2->F2_TIPOPE)) .Or. SF2->(ColumnPos("F2_TPCOMPL")) > 0 .And. AllTrim(SF2->F2_TPCOMPL)=="S") .And. Alltrim(SF2->F2_TIPODOC) == "21"
(PRE) IIf(_aTotal[010],_aTotal[096] := zh_FechaHoraUTC(Alltrim(_aTotal[009]),Alltrim(SM0->M0_CEPENT),IIF(SF2->F2_EMISSAO <_aTotal[040], DATE(), SF2->F2_EMISSAO ),SF2->F2_HORA),"")
(PRE) IIf(!_aTotal[010],_aTotal[096] := DtoS(IIF(SF2->F2_EMISSAO <_aTotal[040], DATE(), SF2->F2_EMISSAO)),"")
(PRE) IIf(!_aTotal[010],_aTotal[096] := Left(_aTotal[096],4) + "-" + Substr(_aTotal[096],5,2)+ "-" + Right(_aTotal[096],2),"")
(PRE) IIf(!_aTotal[010],_aTotal[096] += "T" + SF2->F2_HORA,"")
(PRE) _aTotal[097] := {"SD2",""}Los cambios realizados en el archivo de configuración FATSMEX.INI son exclusivos para el proyecto piloto.
Contar con Facturas timbradas y que se encuentren fuera del periodo actual (emitidas dentro del mismo año, con mes de emisión menor al mes de cancelación). Ejemplo:
- Cambiar la fecha del sistema Protheus con la fecha 01/03/2024.
- Dar de alta una Factura de Salida y timbrarla.
- Cambiar la fecha del sistema Protheus con la fecha actual.
Cancelación de una Factura de Venta fuera de periodo con estatus “Cancelable sin aceptación” y Motivo de Cancelación diferente a 01.
- Este proceso canela una Factura de Venta en el sistema con la generación de Nota de Crédito de Cancelación y de un Recibo de Cobro de Compensación.
- En el módulo Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Cancelación de CFDI (FISA817).
- Informar los parámetros necesarios para visualizar Facturas de Venta (NF) timbradas previamente.
- Seleccionar la Factura de Venta (NF) previamente timbrada y que se encuentra fuera de periodo (Factura generada en las precondiciones)
- Dar clic en el botón Act. Status.
Confirmar la consulta de estado del documento y verificar el log.
- Validar que el documento tenga el estatus "Cancelable sin aceptación".
- Seleccionar nuevamente la Factura de Venta (NF) que fue consultada.
- Dar clic en el botón Cancelar.
- Confirman la continuación de la Solicitud de Cancelación.
- En la pantalla Motivo Baja:
- Informar el campo Motivo "02 - Comprobante emitido con errores sin relación de documento". Después de confirmar el Motivo de Baja, el sistema informa que será ejecutado el proceso de “Cancelación Fuera de Periodo”. En éste proceso se genera una Nota de Crédito de Cancelación con serie "NCA" y un Recibo de Cobro que servirá para compensar la Factura con la Nota de Cancelación.
Confirmar la cancelación.
Se muestra la ventana de “Generación de Recibo”. En ésta ventana se informan los valores de baja (El saldo de la Factura contra el valor a pagar de la Nota de Cancelación) y se permite asignar la Serie (solo si MV_SERREC = .T.) y el número de Recibo de Cobro.
- Confirmar la generación de Recibo.
- Una vez finalizado el proceso de cancelación revisar el log.
El log indica que se ha generado la Nota de Cancelación (NCA) y el Recibo de Compensación.La solicitud es aceptada y se realiza la cancelación del documento ante el SAT, como su estatus inicial era “Cancelable sin aceptación” la solicitud no requiere aceptación.
El estatus de la Factura cambia a "Cancelada fuera de periodo". - Seleccionar nuevamente la Factura.
El sistema indica que a Factura ya se encuentra cancelada. - En el módulo de Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Facturaciones (MAT467N)
- Revisar el estatus de la Factura cancelada anteriormente.
La Factura cambia de estatus a “Cancel. Fuera de Periodo”. Seleccionar la Factura e intentar borrarla o anularla.
Validar que se muestre un mensaje indicando que la Factura no se puede borrar.
Las facturas con estatus “Cancel. Fuera de Periodo” y “Cancel. Fuera de Periodo – Pendiente de acuse” no se podrán borrar o anular ya que se encuentran canceladas o en proceso de cancelación.
- Informar el campo Motivo "02 - Comprobante emitido con errores sin relación de documento". Después de confirmar el Motivo de Baja, el sistema informa que será ejecutado el proceso de “Cancelación Fuera de Periodo”. En éste proceso se genera una Nota de Crédito de Cancelación con serie "NCA" y un Recibo de Cobro que servirá para compensar la Factura con la Nota de Cancelación.
-
- Nota de Crédito de Cancelación.
- En el módulo de Facturación (SIGAFAT) ir al menú Actualizaciones | Facturación | Generac. de Notas de Crédito y Débito (MATA465N)
- En el parámetro "Tipo de Factura" seleccionar la opción “Doc Cancel NCA”.
- Visualizar la Nota de Cancelación (ubicar con el número de Nota de Cancelación informado en el log de la cancelación) y validar de manera general que toda la información este relacionada a la Factura cancelada.
La generación de la Nota de Cancelación (NCA), solo se usará a través de rutina automática, por lo tanto, no tendrá mantenimiento por el usuario ni será transmitida al SAT.
- Nota de Crédito de Cancelación.
Recibo de Cobro de Compensación.
- En el módulo de Financiero(SIGAFIN) ir al menú Actualizaciones |Cuentas por Cobrar | Totvs Recibo (FINA998)
- Buscar el Recibo (ubicar con el número de Recibo informado en el log de la cancelación).
- Visualizar el Recibo y validar que cuente con la compensación entre la Factura cancelada y la Nota de Cancelación (NCA).
04. INFORMACIÓN ADICIONAL
No aplica.
La presente solución aplica para versión 12.1.2210 o superior, y es necesario tener activa la funcionalidad de Facturación Electrónica para el país México. Solución exclusiva para el proyecto piloto.¡IMPORTANTE!
05. ASUNTOS RELACIONADOS
- DT Facturación Electrónica para México de Comprobantes Fiscales Digitales por Internet (CFDI) Versión 4.0
- DT Cancelación de Factura Electrónica fuera de periodo MEX
- documento_tecnico
- totvs_backoffice
- linea_protheus
- sigafat
- facturacion
- mex
- dmina_22522
- cancelacion_cfdi_mex
- fisa817
- timbres_fiscales
- fisa800
- locxnf
- locxnf2
- tipodoc
- inputfieldsall
- locxmex
- cancelacion_fuera_de_periodo
- factura_de_venta
- nota_de_cancelacion
- mata465n
- ncc
- nca
- totvs_recibo
- fina998
- motivos_de_cancelacion
- version_12_1_2210
- 12_1_2210
- fina887
- cfdi_4_0
- mexico
- timbrado_cfdi
- cancelacion_cfdi
- locxfuna
- canelacion_factura_piloto
- piloto