Files
MBS/PROYECTO/otrodir/genera_doc.4gl
T

84 lines
3.1 KiB
Plaintext

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