Files
MBS/PROYECTO/ccdir/analisisclientes.4gl
T

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
}