Commit inicial: fuentes MBS ERP (Genero 6) + .gitignore + docs/SETUP_PC_MBS.md

This commit is contained in:
2026-08-18 20:59:52 -04:00
commit 454973e269
5978 changed files with 2664094 additions and 0 deletions
+298
View File
@@ -0,0 +1,298 @@
{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP008
OBJETIVO : Cuentas por Cobrar a mas de x dias
PROGRAMADOR : Lic. Abner Montalvo Zapata
FECHA REALIZACION : Abril 6, 1993
-------------------------------------------------------------------------------
}
GLOBALS "ccprgb000.4gl"
DEFINE fecha_corte DATE
DEFINE dias_venc, idx_1, idx_2 SMALLINT
DEFINE doccli RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre CHAR(30),
aplica_a INTEGER,
tipo CHAR(2),
fecha DATE,
valor DECIMAL(12,2),
cliente CHAR(6)
END RECORD
FUNCTION ccprrp008()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM ccfmrp008 FROM "ccfmrp008"
DISPLAY FORM ccfmrp008
CALL pantalla()
DISPLAY "ccprrp008" AT 4,3
DISPLAY "Cuentas por Cobrar Vencidas" AT 6,26
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME fecha_corte, dias_venc
BEFORE FIELD fecha_corte
LET fecha_corte = today
AFTER FIELD fecha_corte
IF fecha_corte is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha_corte
END IF
AFTER FIELD dias_venc
IF dias_venc is null THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD dias_venc
END IF
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Busca pendiente de las facturas cuyas fechas de vencimiento son menores
# a la fecha de corte
DECLARE fts_pendientes CURSOR FOR
SELECT UNIQUE b.tipo_cliente,b.sec_cliente,a.nombre,b.num_doc,b.tipo_doc,
MIN(b.fecha_orig)
FROM vetb00004 a,cctb00001 b
WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND
b.status_t IS NULL AND b.fecha_orig <= fecha_corte AND
b.num_doc = b.aplica_a AND (fecha_corte-b.fecha_orig) >= dias_venc
GROUP BY 1,2,3,4,5
DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14
ATTRIBUTE (REVERSE,BOLD)
START REPORT reporte8 TO "C:\\ccrp08"
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
FOREACH fts_pendientes INTO doccli.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
LET doccli.cliente = doccli.tipo_cliente using "&&",
doccli.sec_cliente using "&&&&"
IF doccli.tipo = "AV" THEN
SELECT SUM(a.valor+a.monto_desc)*-1 INTO doccli.valor FROM cctb00001 a
WHERE a.tipo_cliente=doccli.tipo_cliente AND a.sec_cliente=doccli.sec_cliente
AND a.fecha_orig <= fecha_corte AND a.status_t IS NULL
AND a.num_doc = doccli.aplica_a AND a.tipo_doc = "AV"
ELSE
SELECT SUM(a.valor+a.monto_desc) INTO doccli.valor FROM cctb00001 a
WHERE a.tipo_cliente=doccli.tipo_cliente AND a.sec_cliente=doccli.sec_cliente
AND a.fecha_orig <= fecha_corte AND a.status_t IS NULL AND
a.aplica_a = doccli.aplica_a AND a.tipo_doc != "PC"
END IF
IF (fecha_corte - doccli.fecha) >= dias_venc AND doccli.valor <> 0 THEN
OUTPUT TO REPORT reporte8(doccli.*)
END IF
END FOREACH
FINISH REPORT reporte8
CLEAR SCREEN
RUN "type C:\\ccrp08 > %USPRINT%" END FUNCTION
REPORT reporte8(x)
DEFINE x RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre CHAR(30),
aplica_a INTEGER,
tipo CHAR(2),
fecha DATE,
valor DECIMAL(12,2),
cliente CHAR(6)
END RECORD
DEFINE doble_on CHAR(2)
DEFINE doble_off CHAR(2)
DEFINE negrillas_on CHAR(2)
DEFINE negrillas_off CHAR(2)
DEFINE comp_on CHAR(2)
DEFINE comp_off CHAR(2)
DEFINE doce CHAR(2)
DEFINE comprimido CHAR(3)
DEFINE normall CHAR(3)
DEFINE normal CHAR(2)
DEFINE hora CHAR(5)
DEFINE imprime CHAR(1)
DEFINE fecha_fact DATE
DEFINE de1a30, de31a45, de46a60, masde60, total_saldo DECIMAL(12,2)
DEFINE valor,t30,t45,t60,tm60,tsaldo,tt45,ttm60,tt60,ttsaldo DECIMAL(12,2)
DEFINE dias INTEGER
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
ORDER BY x.sec_cliente,x.aplica_a
FORMAT
PAGE HEADER
LET doble_on = ASCII 14
LET doble_off = ASCII 20
LET negrillas_on = ASCII 27, ASCII 69
LET negrillas_off = ASCII 27, ASCII 69
LET comp_on = ASCII 15
LET comp_off = ASCII 18
LET comprimido = ASCII 15
LET doce = ASCII 27, ASCII 77
LET normal = ASCII 27, ASCII 80
LET normal = ASCII 27, ASCII 80
LET hora = time
LET lj = (96 - LENGTH(p_companias.nombre CLIPPED))/2
PRINT COLUMN 1, doce,negrillas_on
PRINT COLUMN 1, "ccprrp008",
COLUMN lj, p_companias.nombre CLIPPED,
COLUMN 89, "Pag. ",pageno using "###"
PRINT COLUMN 33, "Sistema de Cuentas por Cobrar",
COLUMN 89, today using "dd/mm/yyyy"
PRINT COLUMN 30, "Cuentas por Cobrar a mas de ",
dias_venc using "<<<<"," dias"
PRINT COLUMN 43, "Al ", fecha_corte using "dd/mm/yy",
COLUMN 92, hora
SKIP 1 LINES
PRINT COLUMN 5, "--------------------------------------------------",
"------------------------------------------"
PRINT COLUMN 7, "C l i e n t e",
COLUMN 50, "De ", dias_venc + 1 using "<<<<", " a ",
dias_venc + 15 using "<<<<",
COLUMN 72, "Mas de ", dias_venc + 15 using "<<<<",
COLUMN 92, "Total"
PRINT COLUMN 5, "--------------------------------------------------",
"------------------------------------------"
PRINT COLUMN 1, negrillas_off
BEFORE GROUP OF x.sec_cliente
LET de31a45 = 0
LET masde60 = 0
LET total_saldo = 0
ON EVERY ROW
IF de31a45 IS NULL THEN
LET de31a45 = 0
END IF
IF masde60 IS NULL THEN
LET masde60 = 0
END IF
IF total_saldo IS NULL THEN
LET total_saldo = 0
END IF
IF x.fecha IS NULL THEN
LET fecha_fact = 0
END IF
LET dias = fecha_corte - x.fecha
IF dias <= (dias_venc + 15) THEN
LET de31a45 = de31a45 + x.valor
LET total_saldo = total_saldo + x.valor
END IF
IF dias > (dias_venc + 15) THEN
LET masde60 = masde60 + x.valor
LET total_saldo = total_saldo + x.valor
END IF
AFTER GROUP OF x.sec_cliente
PRINT COLUMN 5, x.tipo_cliente using "&&", "-",
x.sec_cliente using "&&&&", " ",
x.nombre clipped,
COLUMN 45, de31a45 using "(((,(((,(((.##)",
COLUMN 66, masde60 using "(((,(((,(((.##)",
COLUMN 82, total_saldo using "(((,(((,(((.##)"
IF t45 IS NULL THEN
LET t45 = 0
END IF
IF tm60 IS NULL THEN
LET tm60 = 0
END IF
IF tsaldo IS NULL THEN
LET tsaldo = 0
END IF
IF tt45 IS NULL THEN
LET tt45 = 0
END IF
IF ttm60 IS NULL THEN
LET ttm60 = 0
END IF
IF ttsaldo IS NULL THEN
LET ttsaldo = 0
END IF
IF x.sec_cliente < 9000 THEN
LET t45 = t45 + de31a45
LET tm60 = tm60 + masde60
LET tsaldo = tsaldo + total_saldo
ELSE
LET tt45 = tt45 + de31a45
LET ttm60 = ttm60 + masde60
LET ttsaldo = ttsaldo + total_saldo
END IF
LET de31a45 = 0
LET masde60 = 0
LET total_saldo = 0
ON LAST ROW
SKIP 1 LINE
PRINT COLUMN 5, "Total Clientes Locales -->",
COLUMN 45, t45 using "(((,(((,(((.##)",
COLUMN 66, tm60 using "(((,(((,(((.##)",
COLUMN 82, tsaldo using "(((,(((,(((.##)"
SKIP 1 LINE
PRINT COLUMN 6, "Total Clientes Exterior -->",
COLUMN 45, tt45 using "(((,(((,(((.##)",
COLUMN 66, ttm60 using "(((,(((,(((.##)",
COLUMN 82, ttsaldo using "(((,(((,(((.##)"
LET tt45 = 0
LET ttm60 = 0
LET ttsaldo = 0
PRINT normal
END REPORT