48 lines
2.2 KiB
Plaintext
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 |