Files

48 lines
2.2 KiB
Plaintext

FUNCTION busca_avance(ptipo_cliente,psec_cliente,pcotizacion_no,valor_f,pfecha,psec_vend,psucid,pfactura,pusuario)
DEFINE ptipo_cliente,psec_cliente,pcotizacion_no,pnum_doc,psec_vend,psucid,pfactura INT,pfecha DATE,
valor_f,pvalor,monto_avance,monto_efectivo,monto_cheque,monto_tarjeta DEC(12,2),
pusuario VARCHAR(50)
LET monto_Efectivo = 0
LET monto_cheque = 0
LET monto_tarjeta = 0
DECLARE busca_av CURSOR FOR
SELECT a.num_doc, a.valor+monto_desc,a.valor_efectivo,a.valor_cheque,a.valor_tarjeta
INTO pnum_doc,pvalor,monto_efectivo,monto_cheque,monto_tarjeta
FROM cctb00001 a
WHERE a.tipo_cliente = ptipo_cliente AND a.sec_cliente = psec_cliente AND
a.documento_ref = pcotizacion_no AND a.tipo_Doc = 'AV' AND a.status_t IS null
FOREACH busca_av
IF pvalor !=0 THEN
LET monto_avance = 0
SELECT SUM(a.valor+a.monto_desc) INTO monto_avance FROM cctb00001 a
WHERE a.num_doc = pnum_doc AND a.tipo_Doc IN ('AV','AP') AND a.status_t IS NULL
# Cuando el avance tiene valor pendiente por aplicar
IF monto_avance > 0 THEN
IF valor_f >= monto_avance THEN
LET pvalor = monto_avance
ELSE
LET pvalor = valor_f
END IF
IF monto_efectivo > 0 THEN
LET monto_efectivo = pvalor
END IF
IF monto_cheque > 0 THEN
LET monto_cheque = pvalor
END IF
IF monto_tarjeta > 0 THEN
LET monto_tarjeta = pvalor
END IF
INSERT INTO cctb00001 (tipo_doc,num_doc,fecha_orig,tipo_cliente,sec_cliente,aplica_a,num_cheque,cod_emp,cod_emp_sec,
valor,monto_desc,us_crea,fech_crea,banco,documento_Ref,valor_efectivo,
valor_cheque,valor_tarjeta,fecha_ven)
VALUES
('AP',pnum_doc,pfecha,ptipo_cliente,psec_cliente,pfactura,pnum_doc,psucid,psec_vend,pvalor*-1,'0',
pusuario,getdate(),pcotizacion_no,pcotizacion_no,monto_efectivo,monto_cheque,monto_tarjeta,'01/01/2001')
END IF
END IF
END FOREACH
END FUNCTION