159 lines
5.2 KiB
Plaintext
159 lines
5.2 KiB
Plaintext
{
|
|
PROGRAMA : CGPRRP034
|
|
OBJETIVO : ANULAR RANGO DE NCF'S
|
|
DESARROLLADOR : ING. ELVIS GARCÍA
|
|
FECHA : AGOSTO 05, 2024
|
|
}
|
|
IMPORT util
|
|
|
|
DEFINE usuarios,clave,rncemisor VARCHAR(50),
|
|
ruta_anulados STRING, numero_msg INT
|
|
|
|
|
|
DEFINE codigodgii CHAR(14),
|
|
descripcion CHAR(80), fecha_vencimiento DATE
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
|
|
CONNECT to "marmotech" AS "IFMX" USER usuarios USING clave
|
|
SELECT a.rnc INTO rncemisor FROM companias a
|
|
CALL genera_anulacion()
|
|
END MAIN
|
|
|
|
|
|
FUNCTION genera_anulacion()
|
|
DEFINE documento_anular RECORD
|
|
nombrefile,rnc_emisor,cantidadEncf,fechaAnulacion,numeroLineas,tipoeCF,
|
|
secuenciaeCFdesde,secuenciaeCFhasta,
|
|
cantidadeCFanulados STRING
|
|
END RECORD, mensaje, respuesta, codigo STRING
|
|
|
|
|
|
DEFINE flag,
|
|
ncf_ini,ncf_fin, comprobante_ini, comprobante_fin STRING, range INT, tiponcf VARCHAR(3)
|
|
|
|
OPEN WINDOW w1 WITH FORM 'cgfmrp034'
|
|
|
|
INPUT BY NAME tiponcf,ncf_ini, ncf_fin ATTRIBUTES(UNBUFFERED, WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
LET ruta_anulados= fgl_getenv("RUTA_XML_ANULADOS")
|
|
|
|
ON ACTION f2
|
|
CALL btipo_fact(1,'FT') RETURNING codigodgii,descripcion,fecha_vencimiento
|
|
LET tiponcf = codigodgii
|
|
DISPLAY BY NAME tiponcf
|
|
|
|
|
|
|
|
ON ACTION CANCEL
|
|
EXIT INPUT
|
|
|
|
AFTER INPUT
|
|
LET numero_msg = 16
|
|
|
|
-- IF fech_ini IS NULL THEN
|
|
-- CALL msg(numero_msg)
|
|
-- NEXT FIELD fech_ini
|
|
-- END IF
|
|
--
|
|
-- IF fech_fin IS NULL THEN
|
|
-- CALL msg(numero_msg)
|
|
-- NEXT FIELD fech_fin
|
|
-- END IF
|
|
|
|
IF tiponcf IS NULL THEN
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tiponcf
|
|
END IF
|
|
|
|
IF ncf_ini IS NULL THEN
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ncf_ini
|
|
END IF
|
|
|
|
IF ncf_fin IS NULL THEN
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD ncf_fin
|
|
END IF
|
|
|
|
LET comprobante_ini = build_whole_voucher(ncf_ini, tiponcf)
|
|
LET comprobante_fin = build_whole_voucher(ncf_fin, tiponcf)
|
|
|
|
LET range = (ncf_fin - ncf_ini) + 1
|
|
|
|
DISPLAY comprobante_ini
|
|
DISPLAY comprobante_fin
|
|
|
|
INITIALIZE flag TO NULL
|
|
|
|
SELECT TOP (1) ncf INTO flag FROM vetb00002
|
|
WHERE ncf BETWEEN comprobante_ini AND comprobante_fin
|
|
AND estado_dgii NOT IN ('Anulado', 'Rechazado')
|
|
|
|
IF flag IS NULL THEN
|
|
|
|
LET documento_anular.nombrefile = ruta_anulados CLIPPED,rncemisor CLIPPED,"AENCF",tiponcf CLIPPED,"_",ncf_ini USING "<<<<<<<",".xml"
|
|
LET documento_anular.rnc_emisor=rncemisor CLIPPED
|
|
LET documento_anular.cantidadEncf= range
|
|
LET documento_anular.fechaAnulacion = util.Datetime.format(current, "%d-%m-%Y %H:%M:%S" )
|
|
LET documento_anular.numeroLineas=1
|
|
LET documento_anular.tipoeCF=tiponcf[2,3]
|
|
LET documento_anular.secuenciaeCFdesde= comprobante_ini
|
|
LET documento_anular.secuenciaeCFhasta= comprobante_fin
|
|
LET documento_anular.cantidadeCFanulados=range
|
|
|
|
CALL anularencf(documento_anular.*) RETURNING mensaje, respuesta, codigo
|
|
|
|
DISPLAY mensaje, respuesta, codigo
|
|
|
|
IF codigo = 200 THEN
|
|
LET respuesta = "LAS SECUENCIAS FUERON ANULADAS CORRECTAMENTE"
|
|
ELSE
|
|
IF codigo = 400 THEN
|
|
LET respuesta = "LAS SECUENCIAS QUE HAS INTENTADO ANULAR YA HAN SIDO UTILIZADAS"
|
|
CALL fgl_winmessage('ANULACION ESTADO', respuesta,NULL)
|
|
NEXT FIELD ncf_ini
|
|
ELSE
|
|
LET respuesta = "HA OCURRIDO UN ERROR CODIGO: ", codigo
|
|
CALL fgl_winmessage('ANULACION ESTADO', respuesta,NULL)
|
|
NEXT FIELD ncf_ini
|
|
END IF
|
|
END IF
|
|
|
|
|
|
INSERT INTO vetb00046(ncf_desde, ncf_hasta, usuario, fecha_anulacion, respuesta_dgii) VALUES
|
|
(comprobante_ini, comprobante_fin, usuarios, getdate(), respuesta)
|
|
|
|
CALL fgl_winmessage('ANULACION ESTADO', respuesta,NULL)
|
|
|
|
ELSE
|
|
|
|
CALL fgl_winmessage('NCF ENCONTRADO', 'EXISTE UN NCF EN EL RANGO ESTABLECIDO YA FACTURADO',NULL)
|
|
NEXT FIELD ncf_ini
|
|
|
|
END IF
|
|
|
|
END INPUT
|
|
|
|
CLOSE WINDOW w1
|
|
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
FUNCTION build_whole_voucher(sequence_number, voucher_type)
|
|
|
|
DEFINE sequence_number INT, voucher_type STRING
|
|
DEFINE answer STRING, i INT
|
|
|
|
LET answer= voucher_type
|
|
|
|
LET answer = answer, sequence_number USING "&&&&&&&&&&"
|
|
|
|
|
|
RETURN answer
|
|
END FUNCTION |