176 lines
6.0 KiB
Plaintext
176 lines
6.0 KiB
Plaintext
GLOBALS "ccprgb000.4gl"
|
|
DEFINE balancesCE RECORD
|
|
cliente CHAR(50),
|
|
tipo_cliente,
|
|
sec_cliente INT,
|
|
email VARCHAR(100),
|
|
valor,
|
|
valor2 DEC(12,2),
|
|
diferencia DEC(12,2),
|
|
fecha_factura DATE
|
|
END RECORD,
|
|
tipoconection VARCHAR(10)
|
|
|
|
FUNCTION VariacionBalances(xtipocliente,xseccliente)
|
|
|
|
DEFINE selec STRING,
|
|
fecha_final DATE,
|
|
idx,idz,impresas,iguales,diferentes,xtipocliente,xseccliente INT,
|
|
valortemp1,valortemp2 DEC(12,2),
|
|
estadoEnvio VARCHAR(100),
|
|
fechaEnvio DATETIME YEAR TO MINUTE,
|
|
enviar BOOLEAN
|
|
|
|
LET fecha_final = TODAY
|
|
LET selec = "select rtrim(a.nombre)+ '('+cast(a.tipo_cliente as varchar(5))+'-'+cast(a.sec_cliente as varchar(5))+')', a.tipo_cliente, a.sec_cliente,
|
|
a.patente as email
|
|
from vetb00004 a
|
|
|
|
where a.tipo_cliente = ? and a.sec_cliente = ? ",
|
|
" and a.status_t is null"
|
|
|
|
|
|
PREPARE comando FROM selec
|
|
DECLARE variaciones CURSOR FOR comando
|
|
OPEN variaciones USING xtipocliente,xseccliente
|
|
LET idx = 1
|
|
LET idz = 0
|
|
LET impresas = 0
|
|
LET diferentes = 0
|
|
LET iguales = 0
|
|
--LET estados.porciento10 = 0
|
|
-- LET estados.cond_pago = ''
|
|
-- LET estados.estilo = 0
|
|
|
|
|
|
LET estadoEnvio = 'NO ENVIADO'
|
|
LET fechaEnvio = NULL
|
|
FOREACH variaciones INTO balancesCE.*
|
|
|
|
CALL verificaEnviar(balancesCE.tipo_cliente,balancesCE.sec_cliente) RETURNING enviar
|
|
IF enviar THEN
|
|
CALL busca_be(balancesCE.tipo_cliente,balancesCE.sec_cliente,fecha_final) RETURNING balancesCE.valor2
|
|
|
|
|
|
CALL busca_bc(balancesCE.tipo_cliente,balancesCE.sec_cliente,fecha_final) RETURNING balancesCE.valor
|
|
-- CALL fecha_factura(balancesCE.tipo_cliente, balancesCE.sec_cliente) RETURNING balancesCE.fecha_factura
|
|
|
|
IF balancesCE.valor = balancesCE.valor2 AND balancesCE.valor > 0 THEN
|
|
|
|
LET valortemp1 = balancesCE.valor
|
|
LET valortemp2 = balancesCE.valor2
|
|
|
|
CALL ccprrp014(balancesCE.tipo_cliente,balancesCE.sec_cliente)
|
|
LET fechaEnvio = CURRENT
|
|
LET estadoEnvio = 'ENVIADO'
|
|
END IF
|
|
END IF
|
|
INSERT INTO envioestados_log (tipo_cliente,sec_cliente,balance1,balance2,fecha_envio,usuario_envio,estado_envio)
|
|
VALUES (balancesCE.tipo_cliente,balancesCE.sec_cliente, balancesCE.valor,balancesCE.valor2,fechaEnvio,SUSER_SNAME(),estadoEnvio)
|
|
END FOREACH
|
|
|
|
END FUNCTION
|
|
|
|
#----------------------------------
|
|
#BUSCAMOS EL BALANCE EN CONSOLIDADO
|
|
#----------------------------------
|
|
FUNCTION busca_bc(t_cliente,s_cliente,fecha_lim)
|
|
DEFINE sbalance,sbalance1 DEC(12,2)
|
|
DEFINE t_cliente,s_cliente SMALLINT
|
|
DEFINE fecha_lim DATE
|
|
|
|
# BUSCA BALANCE DEL CLIENTE PARA IMPRIMIRLO
|
|
LET selec = "
|
|
SELECT SUM(a.valor+a.monto_desc)
|
|
FROM marmotech.dbo.cctb00001 a
|
|
WHERE (a.tipo_cliente = ? AND
|
|
a.sec_cliente = ?) AND
|
|
(a.fecha_orig <=?) AND
|
|
a.tipo_doc NOT IN ('AV','AP') AND
|
|
a.status_t IS NULL
|
|
"
|
|
PREPARE balance1 FROM SELEC
|
|
EXECUTE balance1 INTO sbalance USING t_cliente,s_cliente,fecha_lim
|
|
|
|
LET selec = "
|
|
SELECT SUM(a.valor+a.monto_desc)
|
|
FROM marmotech.dbo.cctb00001 a
|
|
WHERE (a.tipo_cliente = ? AND
|
|
a.sec_cliente = ?) AND
|
|
(a.fecha_orig <=?) AND
|
|
(a.tipo_doc IN ('AV') AND
|
|
a.num_doc=a.aplica_a) AND
|
|
a.status_t IS NULL
|
|
"
|
|
PREPARE balance2 FROM selec
|
|
EXECUTE balance2 INTO sbalance1 USING t_cliente,s_cliente,fecha_lim
|
|
|
|
IF sbalance IS NULL THEN
|
|
LET sbalance = 0
|
|
END IF
|
|
|
|
IF sbalance1 IS NULL THEN
|
|
LET sbalance1 = 0
|
|
END IF
|
|
|
|
LET sbalance = sbalance - sbalance1
|
|
RETURN sbalance
|
|
END FUNCTION
|
|
|
|
#----------------------------------
|
|
#BUSCAMOS EL BALANCE EN FINANZAS
|
|
#----------------------------------
|
|
FUNCTION busca_be(t_cliente,s_cliente,fecha_lim)
|
|
DEFINE sbalance,sbalance1 DEC(12,2)
|
|
DEFINE t_cliente,s_cliente SMALLINT
|
|
DEFINE fecha_lim DATE
|
|
|
|
|
|
# BUSCA BALANCE DEL CLIENTE PARA IMPRIMIRLO
|
|
SELECT SUM(a.valor+a.monto_desc) INTO sbalance
|
|
FROM cctb00001 a
|
|
WHERE (a.tipo_cliente = t_cliente AND
|
|
a.sec_cliente = s_cliente) AND
|
|
(a.fecha_orig <= fecha_lim) AND
|
|
a.tipo_doc NOT IN ("AV","PC","AP") AND
|
|
a.status_t IS NULL
|
|
|
|
SELECT SUM(a.valor+a.monto_desc) INTO sbalance1
|
|
FROM cctb00001 a
|
|
WHERE (a.tipo_cliente = t_cliente AND
|
|
a.sec_cliente = s_cliente) AND
|
|
(a.fecha_orig <= fecha_lim) AND
|
|
(a.tipo_doc IN ("AV") AND
|
|
a.num_doc=a.aplica_a) AND
|
|
a.status_t IS NULL
|
|
|
|
IF sbalance IS NULL THEN
|
|
LET sbalance = 0
|
|
END IF
|
|
|
|
IF sbalance1 IS NULL THEN
|
|
LET sbalance1 = 0
|
|
END IF
|
|
|
|
LET sbalance = sbalance - sbalance1
|
|
RETURN sbalance
|
|
END FUNCTION
|
|
{
|
|
FUNCTION fecha_factura(tCliente,sCliente)
|
|
DEFINE tcliente, sCliente INT,
|
|
fecha_fact DATE
|
|
|
|
SET CONNECTION "SQL_C"
|
|
|
|
SELECT MAX(fecha_factura) INTO fecha_fact
|
|
FROM vetb00002
|
|
WHERE tipo_cliente = tCliente AND sec_cliente = sCliente
|
|
|
|
IF fecha_fact IS NULL OR fecha_fact == '' THEN
|
|
LET fecha_fact= '01/01/1990'
|
|
END IF
|
|
|
|
RETURN fecha_fact
|
|
END FUNCTION
|
|
}
|