GLOBALS DEFINE usuario,clave STRING END GLOBALS MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuario CALL ARG_VAL(2) RETURNING clave CONNECT TO "marmotech" USER usuario USING clave CALL genera_doc() END MAIN FUNCTION genera_doc() DEFINE balance,valor1,valor2 DEC(12,2), xtipo,xcodigo,numero_doc,vendedor,factura,idx INT DECLARE busca CURSOR FOR SELECT DISTINCT a.tipo_cliente,a.sec_cliente,d.sec_vend FROM vetb00004 a,cctb00001 b,vetb00061 c, vetb00028 d WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.tipo_cliente = d.tipo_cliente AND a.sec_cliente = d.sec_cliente AND a.status_t IS NULL AND a.tipo_cliente = c.tipo_cliente AND c.ventas IN (2,3) AND a.tipo_cliente > 14 BEGIN WORK SELECT ult_recibo INTO numero_doc FROM cctb00003 WHERE tipo_Doc = 'OD' LET numero_doc= numero_Doc + 1 UPDATE cctb00003 SET ult_recibo = numero_doc WHERE tipo_Doc = 'OD' LET idx = 1 FOREACH busca INTO xtipo,xcodigo,vendedor IF INT_FLAG THEN EXIT FOREACH END IF LET valor1 = 0 SELECT ISNULL(SUM(a.valor+a.monto_desc),0) INTO valor1 FROM cctb00001 a WHERE a.fecha_orig <= '07/31/2018' and a.tipo_cliente = xtipo and a.sec_cliente = xcodigo and a.status_t is null and a.tipo_doc NOT IN ("AV","PC","AP") LET valor2 = 0.00 SELECT ISNULL(SUM(a.valor+a.monto_desc),0) INTO valor2 FROM cctb00001 a WHERE a.fecha_orig <= '07/31/2018' and a.tipo_cliente = xtipo and a.sec_cliente = xcodigo and a.status_t is null and tipo_doc = "AV" and a.num_doc = a.aplica_a LET balance = valor1-valor2 IF balance < 0 THEN IF balance >=-60 THEN SELECT MAX(a.num_doc) INTO factura FROM cctb00001 a WHERE a.tipo_cliente = xtipo AND a.sec_cliente = xcodigo AND a.tipo_Doc IN ('FT','FE') IF factura IS NULL THEN CONTINUE FOREACH END IF LET balance = balance * -1 { CONSOLIDADO INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,fecha_orig,tipo_cliente,sec_cliente,cod_emp_Sec, aplica_a,tipo_Doc_aplica,valor,monto_desc,us_crea,fech_crea) VALUES (1,numero_Doc,'OC','07/31/2018',xtipo,xcodigo,vendedor,factura,'FT',balance,0,'JSOTO',GETDATE()) } INSERT INTO cctb00001 (cod_cia,num_doc,tipo_doc,fecha_orig,tipo_cliente,sec_cliente,cod_emp_Sec, aplica_a,valor,monto_desc,us_crea,fech_crea) VALUES (1,numero_Doc,'OD','07/31/2018',xtipo,xcodigo,vendedor,factura,balance,0,'JSOTO',GETDATE()) DISPLAY "INSERT ",xtipo,xcodigo,factura," ",BALANCE LET idx = idx + 1 END IF END IF END FOREACH COMMIT WORK DISPLAY "TOTAL REGISTROS ",idx END FUNCTION