105 lines
3.7 KiB
Plaintext
105 lines
3.7 KiB
Plaintext
IMPORT util
|
|
IMPORT security
|
|
|
|
FUNCTION orden_anular(xorden)
|
|
DEFINE i,tiene_compromiso SMALLINT,
|
|
xorden,selec STRING,
|
|
ximpresor,xcopia SMALLINT,
|
|
xtipoOrden VARCHAR(30),
|
|
estado BOOLEAN
|
|
|
|
DEFINE generales RECORD
|
|
usuario VARCHAR(50),
|
|
clave VARCHAR(50),
|
|
num_oc INT
|
|
|
|
END RECORD
|
|
|
|
DEFINE r_out RECORD
|
|
orden INT,
|
|
mensaje_out STRING,
|
|
cod_msg INT
|
|
END RECORD
|
|
CALL util.JSON.parse(xorden,generales)
|
|
WHENEVER ERROR CONTINUE
|
|
DISPLAY "data ordenes anular : ",generales.usuario,' ',generales.clave
|
|
CONNECT TO "smarmotech" USER generales.usuario USING generales.clave
|
|
IF STATUS < 0 THEN
|
|
LET r_out.cod_msg = 404
|
|
LET r_out.orden=0
|
|
LET r_out.mensaje_out = 'ERROR EN USUARIO CONECTANDOSE A LA BASE DE DATOS'
|
|
DISCONNECT CURRENT
|
|
RETURN util.JSON.stringify(r_out)
|
|
END IF
|
|
DISPLAY "DATOS ",generales.num_oc
|
|
SELECT a.num_oc FROM prtb00012 a WHERE a.num_oc = generales.num_oc AND a.status_t IS NULL
|
|
IF STATUS = NOTFOUND THEN
|
|
LET r_out.cod_msg =-5
|
|
LET r_out.orden=0
|
|
LET r_out.mensaje_out = 'ORDEN DE PEDIDOS NO EXISTE'
|
|
DISCONNECT CURRENT
|
|
RETURN util.JSON.stringify(r_out)
|
|
END IF
|
|
SELECT DISTINCT a.num_oc FROM iptb00006 a WHERE a.num_oc = generales.num_oc AND a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET r_out.cod_msg =-5
|
|
LET r_out.orden=0
|
|
LET r_out.mensaje_out = 'ORDEN NO PUEDE SER ANULADA, TIENE TRANSACCIONES INVENTARIO'
|
|
DISCONNECT CURRENT
|
|
RETURN util.JSON.stringify(r_out)
|
|
END IF
|
|
|
|
SELECT DISTINCT a.num_oc FROM cctb00026 a WHERE a.num_oc = generales.num_oc AND a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
LET r_out.cod_msg = -5
|
|
LET r_out.orden=0
|
|
|
|
LET r_out.mensaje_out = 'ORDEN NO PUEDE SER ANULADA, TIENE REQUISICION DESPACHOS'
|
|
DISPLAY "RESPUESTA ANULAR: ",util.JSON.stringify(r_out)
|
|
DISCONNECT CURRENT
|
|
RETURN util.JSON.stringify(r_out)
|
|
END IF
|
|
LET selec = "SELECT DISTINCT a.orden FROM exterior.dbo.vetb00002 a WHERE a.orden = ? AND a.status_t IS NULL"
|
|
|
|
PREPARE busca_factura FROM selec
|
|
EXECUTE busca_factura USING generales.num_oc
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
LET r_out.cod_msg = -5
|
|
LET r_out.orden=0
|
|
LET r_out.mensaje_out = 'ORDEN NO PUEDE SER ANULADA, TIENE FACTURA GENERADA'
|
|
DISPLAY "RESPUESTA ANULAR: ",util.JSON.stringify(r_out)
|
|
DISCONNECT CURRENT
|
|
RETURN util.JSON.stringify(r_out)
|
|
END IF
|
|
|
|
LET tiene_compromiso = 0
|
|
LET selec = "SELECT ISNULL(COUNT(*),0) INTO tiene_compromiso FROM prtb00013 a
|
|
WHERE a.num_oc = ? AND
|
|
a.fech_Crea > '01/01/2007' AND
|
|
a.fecha_compromiso IS NOT NULL AND
|
|
a.status_t is null
|
|
"
|
|
|
|
PREPARE busca_compromiso FROM selec
|
|
EXECUTE busca_compromiso INTO tiene_compromiso USING generales.num_oc
|
|
|
|
IF tiene_compromiso > 0 THEN
|
|
LET r_out.cod_msg = -5
|
|
LET r_out.orden=0
|
|
LET r_out.mensaje_out = 'ORDEN NO PUEDE SER ANULADA, TIENE FECHA DE COMPROMISO'
|
|
DISPLAY "RESPUESTA ANULAR: ",util.JSON.stringify(r_out)
|
|
DISCONNECT CURRENT
|
|
RETURN util.JSON.stringify(r_out)
|
|
END IF
|
|
|
|
UPDATE prtb00012 SET status_t = 'E',cerrada = 'E', fech_mod = getdate(),us_mod = generales.usuario WHERE num_oc = generales.num_oc
|
|
UPDATE prtb00013 SET status_t = 'E',fech_mod = getdate(),us_mod = generales.usuario WHERE num_oc = generales.num_oc
|
|
|
|
LET r_out.cod_msg=200
|
|
LET r_out.mensaje_out='ORDEN PEDIDOS ANULADA'
|
|
DISPLAY "RESPUESTA AL FINAL: ",r_out.mensaje_out
|
|
DISCONNECT CURRENT
|
|
RETURN util.JSON.stringify(r_out)
|
|
END FUNCTION
|