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:
+136
-38
@@ -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
|
||||
Reference in New Issue
Block a user