modificaciones facturacion electronica

This commit is contained in:
Luis
2026-10-15 16:07:57 -04:00
parent 07649704b1
commit ba982b7635
158 changed files with 206301 additions and 27838 deletions
+76 -1
View File
@@ -192,6 +192,7 @@ LET tipo_ncf=NULL
LET descripcion_ncf=NULL
LET itbis =NULL
LET ncf = NULL
CALL e41_reset() -- compra electronica 41 (cpprmt001_ecf.4gl)
@@ -228,6 +229,29 @@ INPUT BY NAME factura.*,ITBIS,TIPO_NCF,cod_mon,NCF WITHOUT DEFAULTS
END IF
ON ACTION compra_e41 ATTRIBUTE(TEXT="Compra Electronica",IMAGE="new")
-- e-CF 41: trae el proximo e-NCF y calcula montos desde el neto
IF factura.cod_sp IS NULL OR factura.cod_sp_sec IS NULL THEN
CALL fgl_winmessage("COMPRA ELECTRONICA","Primero elija el suplidor.","exclamation")
NEXT FIELD cod_sp
END IF
IF e41_captura(factura.cod_sp, factura.cod_sp_sec) THEN
LET tipo_ncf = 41
SELECT a.descripcion INTO descripcion_ncf FROM cgtb00074 a
WHERE a.codigo_fiscal = 41
LET ncf = e41_ncf()
LET factura.num_doc = e41_ncf()
LET factura.valor_fac = e41_neto() -- CxP queda por el neto
LET itbis = e41_itbis()
DISPLAY BY NAME factura.num_doc, factura.valor_fac, itbis, tipo_ncf, ncf, descripcion_ncf
-- lo llena el sistema: no se digita
CALL DIALOG.setFieldActive("num_doc", FALSE)
CALL DIALOG.setFieldActive("valor_fac", FALSE)
CALL DIALOG.setFieldActive("itbis", FALSE)
CALL DIALOG.setFieldActive("tipo_ncf", FALSE)
CALL DIALOG.setFieldActive("ncf", FALSE)
END IF
AFTER FIELD itbis
IF itbis IS NULL THEN
CALL msg(16)
@@ -1306,7 +1330,9 @@ CLOSE WINDOW busca_sp
END FUNCTION
FUNCTION contab()
DEFINE tdebito,tcredito,diferencia DEC(12,2)
DEFINE tdebito,tcredito,diferencia DEC(12,2),
isr_ctas DEC(12,2),
ncf41 VARCHAR(13)
LET int_flag = FALSE
OPEN WINDOW cpfmwd007 AT 10,3 WITH FORM "cpfmwd007"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST)
@@ -1380,6 +1406,16 @@ END CASE
END IF
DISPLAY BY NAME descripcion ATTRIBUTE(BLUE)
-- compra electronica 41: cuenta marcada como retencion -> ISR retenido
IF e41_activo() THEN
IF e41_cuenta_isr(cuentas[curr].cuenta_no) THEN
IF NVL(cuentas[curr].debito,0) = 0 AND NVL(cuentas[curr].credito,0) = 0 THEN
LET cuentas[curr].credito = e41_isr()
DISPLAY cuentas[curr].credito TO cuentas1[curr1].credito
END IF
END IF
END IF
IF cuentas[curr].cuenta_no = cuenta_mayor THEN
CALL msg(192)
@@ -1510,7 +1546,36 @@ END CASE
NEXT FIELD cuenta_no
END IF
-- compra electronica 41: el ISR de las cuentas de retencion debe ser el calculado
IF e41_activo() THEN
LET isr_ctas = 0
FOR idx = 1 TO arr_count()
IF cuentas[idx].cuenta_no IS NOT NULL THEN
IF e41_cuenta_isr(cuentas[idx].cuenta_no) THEN
LET isr_ctas = isr_ctas + NVL(cuentas[idx].credito,0) - NVL(cuentas[idx].debito,0)
END IF
END IF
END FOR
IF isr_ctas <> e41_isr() THEN
CALL fgl_winmessage("COMPRA ELECTRONICA",
"La retencion de ISR en las cuentas ("||isr_ctas||") no es igual a la calculada ("||e41_isr()||").\n"||
"Use una cuenta marcada como retencion en el catalogo.","stop")
NEXT FIELD cuenta_no
END IF
END IF
BEGIN WORK
-- compra electronica 41: se reserva el e-NCF ahora (si se cancela no se pierde)
IF e41_activo() THEN
LET ncf41 = e41_reserva_ncf()
IF ncf41 IS NULL THEN
ROLLBACK WORK
NEXT FIELD cuenta_no
END IF
LET factura.num_doc = ncf41
LET ncf = ncf41
END IF
###### Insertando registros en la Maestra de cuentas por Pagar ####
LET cod_sp1 = factura.cod_sp
@@ -1668,8 +1733,18 @@ LET credito=factura.valor_fac
END IF
END FOR
CALL cuadrada(factura.cod_sp,factura.cod_sp_sec,factura.num_doc) RETURNING cuadradatrx
IF cuadradatrx AND e41_activo() THEN
IF NOT e41_guarda(factura.cod_sp,factura.cod_sp_sec,factura.num_doc,factura.fecha_orig) THEN
LET cuadradatrx = FALSE
END IF
END IF
IF cuadradatrx THEN
COMMIT WORK
-- compra electronica 41: envio a la DGII
IF e41_activo() THEN
CALL e41_envia(factura.cod_sp,factura.cod_sp_sec,factura.num_doc,
factura.fecha_orig,factura.fecha_proc,factura.detalle)
END IF
ELSE
ROLLBACK WORK