{ ============================================================================== PROGRAMA : ccprmt016.4gl PROGRAMADOR : Ing. Juan Soto OBSERVACION : ANULAR AVANCES FECHA : 1/1/2014 ============================================================================== } GLOBALS "ccprgb000.4gl" MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor CONNECT to "smarmotech" AS "MSSQL" USER usuarios USING clave CALL ccprmt016() END MAIN FUNCTION ccprmt016() DEFINE monto1,montoDoc DEC(12,2), ptipodoc CHAR(2), pnumDoc,pnumoc,xcotizacion_no,xtipo,xsec,pnumdocdeposito,sucid INT, cliente CHAR(60), estado CHAR(30), pmontoDeposito DEC(12,2), pfecha DATE OPEN WINDOW ccfmmt016 WITH FORM "ccfmmt016" INPUT BY NAME sucid,ptipoDoc,pnumDoc BEFORE INPUT CALL localidades('1') AFTER FIELD pnumdoc IF pnumdoc IS NOT NULL THEN SELECT a.nombre,CASE b.status_t WHEN 'E' THEN "NULO" ELSE "ACTIVO" END, b.num_cheque, a.tipo_cliente,a.sec_cliente,ISNULL(SUM(b.valor),0),b.fecha_orig INTO cliente,estado,xcotizacion_no,xtipo,xsec,montoDoc,pfecha FROM vetb00004 a,cctb00001 b WHERE a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND b.tipo_doc = ptipoDoc AND b.num_doc = pnumDoc AND b.sucid = sucid AND b.status_t IS NULL GROUP BY a.nombre, b.status_t,b.num_cheque,a.tipo_cliente,a.sec_cliente, b.fecha_orig IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD ptipoDoc END IF DISPLAY BY NAME cliente,estado,montoDoc,pfecha IF ptipoDoc = 'AV' THEN SELECT SUM(a.valor+a.monto_desc) INTO monto1 FROM cctb00001 a WHERE a.status_t IS NULL AND a.num_doc = Pnumdoc AND a.num_doc != a.aplica_a AND a.tipo_doc = "AV" IF monto1 IS NULL THEN LET monto1 = 0 END IF IF monto1 <> 0 THEN CALL fgl_winmessage("ERROR","Documento Tiene Aplicaciones... No Puede Ser Eliminado","info") NEXT FIELD ptipoDoc END IF END IF # BUSCA DESPACHOS { SELECT a.num_oc INTO pnumoc FROM prtb00012 a WHERE a.cotizacion_no = xcotizacion_no AND a.status_t IS NULL SELECT DISTINCT a.num_oc FROM iptb00006 a,iptb00005 b WHERE a.num_oc = pnumoc AND a.status_t IS NULL AND a.cod_mov = b.cod_mov AND b.control_despacho = 'SI' AND a.cod_sp = xtipo AND a.cod_sp_Sec = xsec IF STATUS <> NOTFOUND THEN CALL fgl_winmessage("ERROR","ORDEN TIENE CONDUCE DESPACHO, NO PUEDE ANULAR AVANCE","INFO") NEXT FIELD pnumdoc END IF } END IF AFTER INPUT IF INT_FLAG THEN CALL msg(2) EXIT INPUT END IF LET respuesta = fgl_winquestion("INFO","ESTA SEGURO DE QUERER ANULAR ESTE DOCUMENTO?","NO","NO|YES","question",0) IF UPSHIFT(respuesta) = "YES" THEN BEGIN WORK UPDATE cctb00001 SET status_t = 'E', us_mod = usuarios, fech_mod = getdate() WHERE cctb00001.num_doc = pnumDoc AND cctb00001.tipo_doc = ptipoDoc AND cctb00001.sucid = sucid AND cctb00001.fecha_orig > '06/01/2021' #---------------------------------------------------------------------------- # ANULAR REGISTRO EN FINANZAS #---------------------------------------------------------------------------- UPDATE cgtb00004 SET status_t ='E',us_mod = usuarios,fech_mod = getdate() WHERE tipo_doc_cxc = ptipodoc AND num_doc_cxc = pnumdoc #------------------------------------------------------------------------------------ # ANULAR REGISTROS DE LA TABLA DE LOS DEPOSITOS #------------------------------------------------------------------------------------- SELECT DISTINCT a.num_Doc INTO pnumdocdeposito FROM tetb00008 a WHERE tipo_Doc = ptipodoc AND documento = pnumdoc UPDATE tetb00008 SET status_t = 'E',us_mod = usuarios, fech_mod = getdate() WHERE tipo_Doc = ptipodoc AND documento = pnumdoc SELECT ISNULL(SUM(a.valor),0) INTO pmontoDeposito FROM tetb00008 a WHERE a.num_Doc = pnumdocdeposito AND a.status_t IS null DISPLAY "monto anular dep: ",pnumdocdeposito," monto: ",pmontoDeposito IF pmontoDeposito = 0 THEN UPDATE tetb00001 SET status_t = 'E',us_mod = usuarios, fech_mod = getdate() WHERE num_Doc = pnumdocdeposito ELSE UPDATE tetb00001 SET monto = pmontoDeposito WHERE num_Doc = pnumdocdeposito END IF COMMIT WORK CALL fgl_winmessage("INFO","REGISTRO ANULADO","INFO") END IF END input END FUNCTION