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 DEC(12,2), pusuario VARCHAR(50) DECLARE busca_av CURSOR FOR SELECT a.num_doc, a.valor+monto_desc INTO pnum_doc,pvalor 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' 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 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) VALUES ('AP',pnum_doc,pfecha,ptipo_cliente,psec_cliente,pfactura,pnum_doc,psucid,psec_vend,pvalor*-1,'0', pusuario,getdate(),pcotizacion_no) END IF END IF END FOREACH END FUNCTION