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 }