JSOTO Alta y compilacion G6 de programas CG, Cheques, Activos, Tesoreria, Repuestos e Informatica

Merge de main (ipprrp013/014/046/053) con conflictos resueltos:
- mbsERP.4pw: ipprrp014 conserva ambos 4rp y su 4fd.
- bin/ipprrp014.4rp: columnas MARGEN/CLASIF. + titulo IPPRRP014.

Programas agregados a mbsERP.4pw (53 compilan y enlazan con fgl602):
- CONTABILIDAD GENERAL, ACTIVOS FIJOS, REPUESTOS; grupos nuevos TESORERIA,
  CHEQUES e INFORMATICA (segprmt001 = seguridad2.0/segprmt0001.4gl).
- irdir copiado de 3.20 PROYECTOS/irdir a PROYECTO/irdir; helpers de
  PROYECTOS/otrodir en FUNCIONES_IR (departamento -> irdepartamento.4gl).
- Fuentes mas nuevos de 3.20: edprrp118, edprrp080, acprrp010, cgprmt022.
- FUNCIONES: GeneraEntradaDiario.4gl a la version 3.20 + costoLiquidacion.4gl.
- Ajustes G6: existe duplicado en irprgb000, fakeData de 22 campos y
  answer2 en irprmt036/020 (ApiMaintainC), selectOutputSimple en irprcs008,
  schemas de forms a smarmotech, referencia declarada en cgprmt005.
- cgprmt005 sigue sin enlazar: requiere funciones de EXTERIOR.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-15 16:22:14 -04:00
co-authored by Claude Opus 5.5
90 changed files with 16840 additions and 143 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm databaseName="sistemas" fileVersion="31400" gstVersion="31405" name="managedform" uid="{29ca7c1b-b292-45a4-9e5b-d22ba8587f8d}">
<ManagedForm databaseName="smarmotech" fileVersion="31400" gstVersion="31405" name="managedform" uid="{29ca7c1b-b292-45a4-9e5b-d22ba8587f8d}">
<AGSettings>
<DynamicProperties version="2"/>
</AGSettings>
+1 -1
View File
@@ -7,7 +7,7 @@ FECHA REALIZADO : Septiembre 28, 1993.
MODULO UTILIZA : cgprmt001
--------------------------------------------------------------------------
}
database marmotech
database smarmotech
screen
{
Consulta departamentos
+1
View File
@@ -52,6 +52,7 @@ FUNCTION cgprmt005()
END FUNCTION
FUNCTION cgprad005()
DEFINE referencia LIKE cgtb00004.ref -- G6: no estaba declarada (-8446)
LET hoy = TODAY
LABEL volver1:
INITIALIZE recibo.* TO NULL
+136 -38
View File
@@ -8,14 +8,18 @@
}
GLOBALS
"cgprgb000.4gl"
DEFINE pano,pmes,pventas INT,
ptasa DEC(8,2),
preplica VARCHAR(2)
MAIN
DEFER INTERRUPT
CALL STARTLOG("CGPRMT021.TXT")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave
CONNECT to "marmotech" AS "MSSQL" USER usuarios USING clave
CALL cgprmt022()
END MAIN
FUNCTION cgprmt022()
@@ -24,50 +28,110 @@ FUNCTION cgprmt022()
ano SMALLINT,
mes SMALLINT,
ventas SMALLINT,
tipo_cliente SMALLINT,
tasa DEC(8,2)
END RECORD
END RECORD,
actualiza,selec,inserta STRING,
i INT,
clientes DYNAMIC ARRAY OF RECORD
tipo_cliente1 INT,
tasa1 DEC(12,2)
END RECORD,
replica VARCHAR(2)
OPEN WINDOW w1 WITH FORM "cgfmmt022"
INPUT BY NAME mtasa.*
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME mtasa.*,replica
BEFORE INPUT
CALL cventas()
LET mtasa.ano = YEAR(TODAY)
LET mtasa.mes = MONTH(TODAY)-1
DISPLAY BY NAME mtasa.ano,mtasa.mes
LET selec = "SELECT DISTINCT a.ano FROM marmotech.dbo.cgtb00084 a WHERE a.ano = ? AND a.mes = ? AND a.ventas = ? AND a.tipo_cliente = ?"
PREPARE selecciona FROM selec
AFTER INPUT
IF INT_FLAG THEN
CALL msg(16)
LET INT_FLAG = FALSE
EXIT INPUT
END IF
SELECT DISTINCT a.tipo_cliente FROM vetb00061 a WHERE a.tipo_cliente = mtasa.tipo_cliente AND
a.ventas = mtasa.ventas
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("INFO","COMBINACION TIPO CLIENTE Y MONEDA ESTAN ERRADOS","INFO")
NEXT FIELD ventas
END IF
SELECT DISTINCT a.ano,a.mes,a.ventas,a.tipo_cliente,a.tasa
INTO mtasa.ano,mtasa.mes,mtasa.ventas,mtasa.tipo_cliente
FROM cgtb00084 a WHERE a.ano = mtasa.ano AND a.mes = mtasa.mes AND
a.ventas = mtasa.ventas AND a.tipo_cliente = mtasa.tipo_cliente
IF STATUS <> NOTFOUND THEN
DISPLAY BY NAME mtasa.*
UPDATE cgtb00084 SET cgtb00084.tasa = mtasa.tasa,
us_mod = usuarios,
fech_mod = getdate()
WHERE cgtb00084.ano = mtasa.ano AND cgtb00084.mes = mtasa.mes AND
cgtb00084.ventas = mtasa.ventas AND
cgtb00084.tipo_cliente = mtasa.tipo_cliente
ELSE
INSERT INTO cgtb00084 (ano,mes,ventas,tipo_cliente,tasa,us_crea,fech_crea) VALUES
(mtasa.ano,mtasa.mes,mtasa.ventas,mtasa.tipo_cliente,mtasa.tasa,usuarios,getdate())
END IF
CALL msg(13)
EXIT INPUT
END INPUT
LET actualiza = "UPDATE marmotech.dbo.cgtb00084 set tasa = ? WHERE ano = ? and mes = ? and ventas =? and tipo_cliente = ?"
PREPARE actual FROM actualiza
LET inserta = "INSERT INTO marmotech.dbo.cgtb00084 (ano,mes,tipo_cliente,ventas,tasa) values ",
" (?,?,?,?,?)"
PREPARE adicionar FROM inserta
ON CHANGE tasa
DECLARE busca_tipos CURSOR for
SELECT DISTINCT a.tipo_cliente FROM vetb00061 a WHERE a.ventas = mtasa.ventas AND a.tipo_cliente > 14
LET i =1
FOREACH busca_tipos INTO clientes[i].*
LET clientes[i].tasa1=mtasa.tasa
LET i = i + 1
END FOREACH
IF i=1 THEN
CALL fgl_winmessage("INFO","COMBINACION TIPO CLIENTE Y MONEDA ESTAN ERRADOS","INFO")
NEXT FIELD ventas
END IF
END INPUT
DISPLAY ARRAY clientes TO sclientes.*
ON ACTION actualizar ATTRIBUTE(TEXT="Actualiza")
IF fgl_winquestion("Actualiza","Estas seguro de Actualizar la tasa?","No","Yes|No","question",0) = "Yes" THEN
FOR i = 1 TO clientes.getLength()
IF clientes[i].tipo_cliente1 IS NOT NULL THEN
IF clientes[i].tasa1 IS NULL THEN
CALL msg(16)
NEXT FIELD tasa
END IF
SELECT DISTINCT a.ano,a.mes,a.ventas,a.tipo_cliente,a.tasa
INTO mtasa.ano,mtasa.mes,mtasa.ventas,clientes[i].tipo_cliente1
FROM cgtb00084 a WHERE a.ano = mtasa.ano AND a.mes = mtasa.mes AND
a.ventas = mtasa.ventas AND a.tipo_cliente = clientes[i].tipo_cliente1
IF STATUS <> NOTFOUND THEN
DISPLAY BY NAME mtasa.*
UPDATE cgtb00084 SET cgtb00084.tasa = mtasa.tasa,
us_mod = usuarios,
fech_mod = getdate()
WHERE cgtb00084.ano = mtasa.ano AND cgtb00084.mes = mtasa.mes AND
cgtb00084.ventas = mtasa.ventas AND
cgtb00084.tipo_cliente = clientes[i].tipo_cliente1
ELSE
INSERT INTO cgtb00084 (ano,mes,ventas,tipo_cliente,tasa,us_crea,fech_crea) VALUES
(mtasa.ano,mtasa.mes,mtasa.ventas,clientes[i].tipo_cliente1,mtasa.tasa,usuarios,getdate())
END IF
# PARA LA BASE DE DATOS MARMOTECH
EXECUTE selecciona USING mtasa.ano,mtasa.mes,mtasa.ventas,clientes[i].tipo_cliente1
IF STATUS = NOTFOUND THEN
IF clientes[i].tipo_cliente1 IS NOT NULL THEN
EXECUTE adicionar USING mtasa.ano,mtasa.mes,clientes[i].tipo_cliente1,mtasa.ventas,mtasa.tasa
END IF
ELSE
EXECUTE actual USING mtasa.tasa,mtasa.ano,mtasa.mes,mtasa.ventas,clientes[i].tipo_cliente1
END IF
END IF
END FOR
LET pano = mtasa.ano
LET pmes = mtasa.mes
LET pventas = mtasa.ventas
LET ptasa = mtasa.tasa
LET preplica = replica
IF replica = "SI" THEN
CALL replicar()
END IF
CALL insertalog()
CALL fgl_winmessage("INFO","ACTUALIZACION EXITOSA","INFO")
END IF
END DISPLAY
ON ACTION CANCEL
CALL fgl_winmessage("INFO","OPERACION CANCELADA","INFO")
RETURN
END DIALOG
CLOSE WINDOW w1
END FUNCTION
@@ -79,7 +143,7 @@ FUNCTION cventas()
LET pventas = ui.combobox.forname("formonly.ventas")
DECLARE bventas CURSOR FOR
SELECT a.ventas,a.descripcion FROM vetb00061 a
SELECT a.ventas,a.descripcion FROM vetb00060 a
CALL pventas.clear()
FOREACH bventas INTO kventas,dventas
@@ -87,3 +151,37 @@ FUNCTION cventas()
END FOREACH
END FUNCTION
FUNCTION replicar()
DEFINE replica,selecta,actualizacion STRING,
mes_falta,k,mesinsert INT
LET actualizacion = "UPDATE marmotech.dbo.cgtb00084 set tasa = ? WHERE ano = ? AND mes = ? AND ventas = ?"
PREPARE actualizacionxe FROM actualizacion
LET selecta = "SELECT DISTINCT a.ano FROM marmotech.dbo.cgtb00084 a WHERE a.ano = ? AND a.mes = ? AND a.ventas = ?"
PREPARE selecciona FROM selecta
LET replica = "INSERT INTO marmotech.dbo.cgtb00084 (ano,mes,ventas,tipo_cliente,tasa)
SELECT a.ano,?,a.ventas,a.tipo_cliente,a.tasa FROM cgtb00084 a WHERE a.ano = ? AND a.mes = ? AND a.ventas = ? "
PREPARE duplica FROM replica
LET mes_falta = 12 - pmes
LET mesinsert = pmes + 1
FOR k = 1 TO mes_falta
EXECUTE selecciona USING pano,mesinsert,pventas
IF STATUS = NOTFOUND THEN
EXECUTE duplica USING mesinsert,pano,pmes,pventas
ELSE
EXECUTE actualizacionxe USING ptasa,pano,mesinsert,pventas
END IF
LET mesinsert = mesinsert + 1
END FOR
END FUNCTION
FUNCTION insertaLog()
INSERT INTO cgtb00084_log VALUES (getdate(),usuarios,preplica)
END FUNCTION
+1 -1
View File
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?>
<ManagedForm databaseName="smarmotech" fileVersion="31400" gstVersion="31408" name="ManagedForm" uid="{49cf58f8-0836-404a-8a30-ef813c88a4b4}">
<ManagedForm databaseName="smarmotech" fileVersion="31400" gstVersion="3140a" name="ManagedForm" uid="{49cf58f8-0836-404a-8a30-ef813c88a4b4}">
<AGSettings>
<DynamicProperties version="2"/>
</AGSettings>
+9 -4
View File
@@ -210,7 +210,9 @@ FUNCTION ipprrp004()
" AND c.cod_n = e.cod_n and c.cod_grupo =e.cod_grupo AND c.cod_tipo = e.cod_tipo AND ",
" c.cod_sec = e.cod_sec ",
" AND e.cod_cia = f.cod_cia and c.cod_mov = k.cod_mov ",
" AND c.status_t is NULL and c.cod_mov = ",
#-> Excluye los movimientos que YA generaron su asiento en linea
# (ipprmt044 sella iptb00006.referenciaentrada). Evita doble contabilizacion.
" AND c.status_t is NULL AND c.referenciaentrada IS NULL and c.cod_mov = ",
cod_mov, #" c.cod_mov = 44 ",
# " AND c.departamento = 2407 ",
"GROUP BY c.cod_mov,c.cod_n,c.cod_grupo,c.cod_tipo,c.cod_sec,e.descrip_esp,e.cod_cia,f.descripcion,c.departamento,x.nom_dpto, ",
@@ -306,7 +308,8 @@ FUNCTION ipprrp004()
LET acumulado.cuenta_gasto = acumulado_ac.cuenta_3
# LET acumulado.cuenta_imp_material = acumulado_ac.cuenta_imp_material
LET acumulado.entrada_d = entrada_d
IF acumulado.cod_cia = 3 OR acumulado.cod_cia = 2 THEN
IF (acumulado.cod_cia = 3 OR acumulado.cod_cia = 2)
AND acumulado_ac.cuenta_imp_material IS NOT NULL THEN
LET acumulado.cuenta_material = acumulado_ac.cuenta_imp_material
LET acumulado.cuenta_imp_material = NULL
END IF
@@ -399,9 +402,11 @@ FUNCTION ipprrp004()
LET acumulado.cuenta_imp_material = acumulado_ac.cuenta_imp_material
LET acumulado.entrada_d = entrada_d
IF acumulado.cod_cia = 3 THEN
#-> Solo sustituye si el movimiento tiene cuenta_imp_material; si viene
# NULL (p.ej. mov 46 solo tiene cuenta_1) se perdia la partida de material
IF acumulado.cod_cia = 3
AND acumulado.cuenta_imp_material IS NOT NULL THEN
LET acumulado.cuenta_material = acumulado.cuenta_imp_material
END IF
LET acumulado.cod_n = acumulado_ac.cod_n
LET acumulado.cod_grupo = acumulado_ac.cod_grupo
+7 -5
View File
@@ -33,8 +33,8 @@ FUNCTION irprrp009()
DEFINE select_ac CHAR(1000)
DEFINE c_ano CHAR(4)
DEFINE entra, nombre_mes CHAR(25)
DEFINE entra1 CHAR(5)
DEFINE nombre_mes CHAR(25)
DEFINE detalle CHAR(100)
DEFINE numero_ent CHAR(2)
DEFINE ano_act CHAR(4)
@@ -159,8 +159,8 @@ FUNCTION irprrp009()
CALL controlNumericoED(
numero_ent, datos_cons.fech_fi, NULL)
RETURNING entrada
DISPLAY BY NAME entrada
LET entra = entrada
DISPLAY BY NAME entra
AFTER INPUT
@@ -204,7 +204,9 @@ FUNCTION irprrp009()
"irtb00005 AS c ON b.cod_mov = c.cod_mov LEFT OUTER JOIN ",
"adtb00001 AS d ON b.sec_a = d.departamento ",
"WHERE ",
" b.fecha BETWEEN ? AND ? AND b.status_t IS NULL ",
#-> Excluye los movimientos que YA generaron su asiento en linea
# (irprmt036 sella irtb00006.referenciaentrada). Evita doble contabilizacion.
" b.fecha BETWEEN ? AND ? AND b.status_t IS NULL AND b.referenciaentrada IS NULL ",
" GROUP BY b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec,a.descrip_esp,a.unidad_med,b.cod_mov,c.descrip_mov,b.sec_a,d.nom_dpto, a.cuenta,e.cuenta_no ",
" ORDER BY b.cod_mov,b.sec_a,b.cod_n,b.cod_grupo,b.cod_tipo,b.cod_sec"