{ FUNCION: autorizarequisicion.4gl DESARROLLADO : ING. JUAN SOTO FECHA : FEB, 24 2023 OBJETIVO : TERMINAR EL PROCESO QUE VIENE DE LA FUNCION evaluaclientes.4gl, ACTUALIZA LA REQUISICION DE DESPACHO } FUNCTION autorizarequisicion(balance,monto_actual_req, monto_req_autorizadas, limite_cr,tienefactura,factura,ztipocliente) DEFINE balance,monto_actual_req, monto_req_autorizadas, limite_cr,valor_total,tasa, monto_control DEC(12,2), string_estado STRING, tienefactura VARCHAR(2), autoriza BOOLEAN, factura,ztipocliente INT # BUSCA TASA SELECT a.ultima_tasa INTO tasa FROM vetb00060 a WHERE a.tipo_cliente = ztipocliente IF tasa > 1 THEN LET monto_control = 1.60 * tasa ELSE LET monto_control = 100 END IF LET valor_total = monto_req_autorizadas+monto_actual_req IF tienefactura = "SI" THEN LET string_estado = "ESTA REQUISICION NO FUE AUTORIZADA, TIENE FACTURAS VENCIDAS EL CLIENTE, UNA DE LAS FACTURAS ES ",factura USING "<<<<<<<<" RETURN FALSE,string_estado END IF IF tienefactura = 'NO' THEN #CUANDO EL CLIENTE TIENE SALDO A FAVOR IF balance < 0 THEN IF ((balance * -1))+monto_control >=valor_total THEN LET autoriza = TRUE LET string_estado = "ESTA REQUISICION ESTA AUTORIZADA, PORQUE EL BALANCE DE ",balance USING "##,###,###.##", " ES MAYOR O IGUAL A LA SUMATORIA DEL MONTO DE LAS REQUISICIONES PENDIENTES POR DESPACHAR, LA CUAL ES ",valor_total USING "##,###,###.##" RETURN autoriza,string_estado ELSE LET string_estado = "ESTA REQUISICION NO FUE AUTORIZADA, PORQUE EL BALANCE DE ",balance USING "##,###,###.##", " NO SATISFACE EL VALOR DE LA COTIZACION MAS EL MONTO DE ESTA REQUISICION LA CUAL ES ",valor_total USING "##,###,###.##" LET autoriza = FALSE RETURN autoriza,string_estado END IF END IF #CONTROL LIMITE DE CREDITO IF limite_cr > 0 THEN IF (balance+valor_total) > limite_cr THEN LET autoriza = FALSE LET string_estado = "ESTA REQUISICION NO FUE AUTORIZADA, PORQUE LA SUMATORIA DEL BALANCE, VALOR PENDIENTE POR DESPACHAR, MONTO DE ESTA REQUISICION, LO CUAL ES ",balance *-1 USING "##,###,###.##", " NO SATISFACE EL VALOR DEL LIMITE DE CREDITO DEL CLIENTE, LO CUAL ES ", limite_cr USING "##,###,###.##" RETURN autoriza,string_estado ELSE LET string_estado = "ESTA REQUISICION ESTA AUTORIZADA, PORQUE LA SUMATORIA DEL BALANCE, VALOR PENDIENTE POR DESPACHAR, MONTO DE ESTA REQUISICION, LO CUAL ES ", balance+valor_total USING "##,###,###.##", " SATISFACE EL VALOR DEL LIMITE DE CREDITO DEL CLIENTE, LO CUAL ES ",limite_cr USING "##,###,###.##" LET autoriza = TRUE RETURN autoriza,string_estado END IF END IF END IF IF balance=0 AND limite_Cr = 0 THEN LET string_estado = "ESTA REQUISICION NO FUE AUTORIZADA, YA QUE EL CLIENTE NO TIENE AVANCE A COTIZACION APLICADO, ASI COMO TAMPOCO LIMITE DE CREDITO " LET autoriza = FALSE END IF RETURN autoriza,string_estado END FUNCTION