1665 lines
63 KiB
Plaintext
1665 lines
63 KiB
Plaintext
{
|
|
------------------------------------------------------------------
|
|
PROGRAMA : COPRMT025
|
|
OBJETIVO : Capturar, Consultar y Eliminar registros de la
|
|
Tabla de Requisiciones.
|
|
PROGRAMADOR : Ing. Juan Soto
|
|
FECHA REALIZACION : Marzo 19, 1997
|
|
FECHA MODIFICACION: Febrero 23, 2016.
|
|
------------------------------------------------------------------
|
|
}
|
|
IMPORT os
|
|
GLOBALS "coprgb000.4gl"
|
|
DEFINE c_cuenta SMALLINT
|
|
DEFINE
|
|
cantidad_fur, multiplo DECIMAL(12,2),
|
|
ult_req,p_res,pmultiplo,ult_orden INTEGER,
|
|
nocalcula CHAR(1),
|
|
actualiza CHAR(2),
|
|
proveedor_sugerido VARCHAR(100),
|
|
inserteDetalle,notifica VARCHAR(2), empty STRING
|
|
|
|
DEFINE adicional RECORD
|
|
detalle1, detalle2, detalle3 CHAR(70)
|
|
END RECORD,
|
|
ktipo_cliente,ksec_cliente INT,
|
|
cliente,knombre VARCHAR(100)
|
|
DEFINE d_tipos,mensaje,f_tipos,l_file,filepath,extension,extension_foto,tmp_dirfoto STRING,
|
|
tmpdir_file,tipos_foto,dir_file,dir_foto CHAR(60) ,
|
|
fdocumento,ffoto BYTE,
|
|
xnombreusuario VARCHAR(200)
|
|
|
|
DEFINE xusername,xsmtphost,xsmtpport,xpassword STRING,
|
|
subject,attachment VARCHAR(100),
|
|
cuerpo_correo,
|
|
|
|
toEmail, orden_trabajo, answer_workorder, descrip_depto STRING, depto INT
|
|
|
|
DEFINE data RECORD
|
|
area_sp VARCHAR(10),
|
|
ciu_sp VARCHAR(30),
|
|
cod_pais VARCHAR(3),
|
|
cod_sp SMALLINT,
|
|
cod_sp_sec SMALLINT,
|
|
cont_sp VARCHAR(30),
|
|
contactID INTEGER,
|
|
dir_sp VARCHAR(60),
|
|
email VARCHAR(60),
|
|
fax_sp VARCHAR(25),
|
|
fech_crea DATETIME YEAR TO FRACTION,
|
|
fech_mod DATETIME YEAR TO FRACTION,
|
|
id_maintainx INTEGER,
|
|
nom_sp VARCHAR(41),
|
|
status_t VARCHAR(1),
|
|
tel_sp VARCHAR(25),
|
|
term_sp SMALLINT,
|
|
us_crea VARCHAR(50),
|
|
us_mod VARCHAR(50)
|
|
END RECORD
|
|
|
|
DEFINE container RECORD
|
|
tipo_inv STRING,
|
|
cod_n INT,
|
|
cod_grupo INT,
|
|
cod_tipo INT,
|
|
cod_sec INT
|
|
END RECORD
|
|
|
|
MAIN
|
|
DEFER INTERRUPT
|
|
CALL STARTLOG("coprmt025.log")
|
|
CALL ARG_VAL(1) RETURNING usuarios
|
|
CALL ARG_VAL(2) RETURNING clave
|
|
CONNECT TO "smarmotech" AS "MSSQL" USER usuarios USING clave
|
|
|
|
CALL buscarToemail()
|
|
CALL coprmt025()
|
|
END MAIN
|
|
|
|
FUNCTION coprmt025()
|
|
|
|
CLEAR SCREEN
|
|
OPTIONS
|
|
FORM LINE 8,
|
|
ERROR LINE 23,
|
|
COMMENT LINE 21,
|
|
PROMPT LINE 25
|
|
|
|
#CALL defecto(impresor) RETURNING imprime,letras.*, archivo
|
|
|
|
|
|
OPEN FORM cofmmt025 FROM "cofmmt025"
|
|
DISPLAY FORM cofmmt025
|
|
|
|
MENU "OPCIONES"
|
|
COMMAND "Adicionar"
|
|
"<Esc> Adiciona Registro <Ctrl-C> Cancela Operacion "
|
|
CLEAR FORM
|
|
LET actualiza = "NO"
|
|
CALL copcad025()
|
|
COMMAND "Consultar-Anular"
|
|
"<Esc> Realiza Busqueda <Ctrl-C> Cancela Operacion"
|
|
LET actualiza = "SI"
|
|
CLEAR FORM
|
|
CALL copcmf025()
|
|
COMMAND "Salir" "Retorna Menu Anterior"
|
|
DELETE FROM cotb00042
|
|
WHERE num_req = 0 AND us_crea = suser_sname() AND status_t IS NULL
|
|
EXIT MENU
|
|
END MENU
|
|
END FUNCTION
|
|
|
|
FUNCTION copcad025()
|
|
DEFINE tiene_Dato CHAR(2), answer STRING
|
|
INITIALIZE depto TO NULL
|
|
# Captura los datos que va a contener el registro
|
|
|
|
DIALOG ATTRIBUTE(UNBUFFERED)
|
|
INPUT BY NAME requisi2.*,salida,notifica, orden_trabajo, depto ATTRIBUTE(WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
LET d_tipos="PDF"
|
|
LET f_tipos="*.pdf *.jpg *.png *.doc *.xls"
|
|
LET tipos_foto ="*.jpg *.png"
|
|
LET mensaje=%"Elige Documento"
|
|
IF actualiza = "NO" THEN
|
|
LET dir_file = NULL
|
|
LOCATE fdocumento IN MEMORY
|
|
END IF
|
|
LOCATE ffoto IN MEMORY
|
|
IF requisi2.estado IS NULL THEN
|
|
LET requisi2.estado = 'EN PROCESO'
|
|
END IF
|
|
DISPLAY BY NAME requisi2.estado
|
|
CALL busca_departamento2()
|
|
|
|
IF actualiza = "NO" THEN
|
|
IF tiene_dato IS NULL THEN
|
|
LET tiene_dato = "NO"
|
|
END IF
|
|
|
|
LET requisi2.num_req = 0
|
|
LET requisi2.departamento = NULL
|
|
LET requisi2.cod_emp_sec = NULL
|
|
LET requisi2.fech_req = TODAY
|
|
|
|
LET requisi2.prioridad='NORMAL'
|
|
LET requisi2.num_oc=NULL
|
|
|
|
IF tiene_Dato = "NO" THEN
|
|
CALL arr_requisi2.clear()
|
|
END IF
|
|
|
|
SELECT a.departamento,a.num_emp,b.nom_dpto,RTRIM(c.nom1_emp)||' '||ISNULL(c.apell1_emp,' ')
|
|
INTO requisi2.departamento,requisi2.cod_emp_sec,descrip1
|
|
FROM seg0001 a,adtb00001 b,adtb00003 c
|
|
WHERE a.usuario = usuarios AND a.departamento = b.departamento AND a.num_emp = c.num_emp
|
|
|
|
LET depto = requisi2.departamento
|
|
|
|
DISPLAY BY NAME requisi2.departamento,requisi2.cod_emp_sec,descrip1, depto
|
|
END IF
|
|
LET salida = "PDF"
|
|
|
|
ON ACTION bdocumento
|
|
LET dir_file = NULL
|
|
|
|
CALL ui.Interface.frontCall("standard","openfile", [dir_file,d_tipos,f_tipos,mensaje], [filepath] )
|
|
|
|
IF filepath IS NOT NULL THEN
|
|
LET dir_file = os.Path.basename(filepath)
|
|
CALL fgl_getfile(filepath,dir_file)
|
|
|
|
CALL fdocumento.readFile(dir_file)
|
|
|
|
DISPLAY BY NAME dir_file
|
|
LET extension = os.Path.extension(dir_file)
|
|
|
|
END IF
|
|
ON ACTION busca_depto
|
|
CALL busca_dpto() RETURNING requisi2.departamento,descrip1
|
|
DISPLAY BY NAME descrip1,requisi2.departamento
|
|
|
|
ON ACTION busca_emp
|
|
CALL busca_emp() RETURNING requisi2.cod_emp_sec,descrip2
|
|
LET identifica = null
|
|
IF existe = "S" THEN
|
|
IF not int_flag THEN
|
|
DISPLAY BY NAME descrip2,requisi2.cod_emp_sec
|
|
NEXT FIELD uso
|
|
END IF
|
|
LET int_flag = false
|
|
END IF
|
|
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
END IF
|
|
|
|
BEFORE FIELD fech_req
|
|
LET requisi2.fech_req = today
|
|
DISPLAY BY NAME requisi2.fech_req
|
|
|
|
AFTER FIELD fech_req
|
|
IF requisi2.fech_req < today THEN
|
|
LET numero_msg = 369
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_req
|
|
END IF
|
|
|
|
|
|
AFTER FIELD departamento
|
|
IF requisi2.departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD fech_req
|
|
ELSE
|
|
|
|
SELECT b.nom_dpto INTO descrip1
|
|
FROM adtb00001 b
|
|
WHERE b.departamento = requisi2.departamento
|
|
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 371
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip1
|
|
END IF
|
|
|
|
|
|
AFTER FIELD cod_emp_sec
|
|
IF requisi2.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
ELSE
|
|
SELECT RTRIM(a.nom1_emp)||' '||ISNULL(a.apell1_emp,' ') INTO descrip2
|
|
FROM adtb00003 a,adtb00001 b
|
|
WHERE a.num_emp = requisi2.cod_emp_sec and
|
|
b.departamento = requisi2.departamento and
|
|
a.departamento = b.departamento
|
|
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 371
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
|
|
DISPLAY BY NAME descrip2
|
|
END IF
|
|
|
|
|
|
|
|
AFTER FIELD prioridad
|
|
IF requisi2.prioridad IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD prioridad
|
|
|
|
END IF
|
|
AFTER FIELD num_oc
|
|
LET ktipo_cliente = NULL
|
|
LET ksec_cliente=NULL
|
|
LET knombre=NULL
|
|
IF requisi2.num_oc IS NOT NULL AND requisi2.num_oc <> 0 THEN
|
|
SELECT a.tipo_cliente,a.sec_cliente,b.nombre INTO ktipo_cliente,ksec_cliente,knombre
|
|
FROM prtb00012 a,vetb00004 b
|
|
WHERE a.num_oc = requisi2.num_oc AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND
|
|
a.status_t IS NULL
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
CALL fgl_Winmessage("INFO","ORDEN NO EXISTE","INFO")
|
|
NEXT FIELD num_oc
|
|
END IF
|
|
LET cliente = ktipo_cliente USING "&&","-",ksec_cliente USING "&&&&&&&&"," ",knombre CLIPPED
|
|
DISPLAY BY NAME cliente
|
|
IF actualiza <> "SI" THEN
|
|
CALL busca_det_orden()
|
|
END IF
|
|
END IF
|
|
AFTER FIELD uso
|
|
IF requisi2.uso IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD uso
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
|
|
IF orden_trabajo IS NOT NULL THEN
|
|
|
|
INITIALIZE data.* TO NULL
|
|
|
|
CALL ApiMaintainC('CHECK', orden_trabajo, data.*, usuarios) RETURNING answer
|
|
|
|
IF answer = 0 OR answer IS NULL THEN
|
|
|
|
CALL fgl_winmessage(
|
|
"ORDEN DE TRABAJO EN MAINTAINX",
|
|
"El ID de la orden de trabajo colocada no se encuentra en MaintainX",
|
|
"stop")
|
|
NEXT FIELD orden_trabajo
|
|
|
|
ELSE
|
|
LET answer_workorder = answer
|
|
END IF
|
|
|
|
END IF
|
|
|
|
IF requisi2.departamento IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD departamento
|
|
END IF
|
|
|
|
IF depto IS NULL OR depto = 0 THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD depto
|
|
END IF
|
|
|
|
IF requisi2.cod_emp_sec IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
LET descrip2 = NULL
|
|
LET descrip1 = NULL
|
|
SELECT RTRIM(a.nom1_emp)||' '||ISNULL(a.apell1_emp,' ') INTO descrip2
|
|
FROM adtb00003 a,adtb00001 b
|
|
WHERE a.num_emp = requisi2.cod_emp_sec and
|
|
b.departamento = requisi2.departamento and
|
|
a.departamento = b.departamento
|
|
|
|
IF status >= 0 THEN
|
|
IF status = notfound THEN
|
|
LET numero_msg = 371
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_emp_sec
|
|
END IF
|
|
ELSE
|
|
CALL integridad()
|
|
IF bandera = 1 THEN
|
|
LET bandera = 0
|
|
RETURN
|
|
END IF
|
|
END IF
|
|
LET descrip2 = descrip2 clipped," ",descrip1 clipped
|
|
DISPLAY BY NAME descrip2
|
|
IF requisi2.num_oc IS NOT NULL AND requisi2.num_oc <> 0 THEN
|
|
IF actualiza = "SI" THEN
|
|
LET opt = fgl_winquestion("ORDEN","SE ACTUALIZARAN LOS ITEMS DE ESTA REQUISICION CON LOS QUE TIENE LA ORDEN DE PEDIDOS, DESEAS REALIZAR ESTA OPERACION?","NO","NO|YES","QUESTION",0)
|
|
IF opt = "YES" THEN
|
|
CALL busca_det_orden()
|
|
END IF
|
|
ELSE
|
|
CALL busca_det_orden()
|
|
END IF
|
|
|
|
ELSE
|
|
IF actualiza = "SI" THEN
|
|
CALL busca_det_req()
|
|
END IF
|
|
END IF
|
|
|
|
END INPUT
|
|
# Captura de los articulos requeridos
|
|
INPUT ARRAY arr_requisi2 FROM s_requisi2.* #ATTRIBUTE (WITHOUT DEFAULTS)
|
|
BEFORE INPUT
|
|
IF actualiza = "NO" AND tiene_dato = "NO" THEN
|
|
IF requisi2.num_oc IS NULL THEN
|
|
CALL arr_requisi2.clear()
|
|
END IF
|
|
END IF
|
|
LET tiene_dato = "SI"
|
|
ON ACTION bdownload
|
|
IF arr_requisi2[arr_curr()].foto IS NOT NULL THEN
|
|
# LET dir_foto = usuarios CLIPPED,dir_Foto CLIPPED
|
|
LET filepath = "foto.jpg"
|
|
CALL ui.Interface.frontCall("standard","savefile", [dir_foto,d_tipos,tipos_foto,mensaje], [filepath] )
|
|
CALL arr_requisi2[arr_curr()].foto.writeFile(dir_foto)
|
|
IF filepath IS NOT NULL THEN
|
|
CALL fgl_putfile(dir_foto,filepath)
|
|
CALL fgl_Winmessage("info","Download Terminado","info")
|
|
END IF
|
|
END IF
|
|
ON ACTION bfoto
|
|
LET curr = arr_curr()
|
|
LET dir_foto = NULL
|
|
LET ffoto = null
|
|
CALL ui.Interface.frontCall("standard","openfile", [dir_foto,d_tipos,tipos_foto,mensaje], [filepath] )
|
|
IF actualiza = "SI" THEN
|
|
IF filepath IS NOT NULL THEN
|
|
LET dir_foto = os.Path.basename(filepath)
|
|
LET extension_foto = os.Path.extension(filepath)
|
|
LET dir_foto = usuarios CLIPPED,dir_foto CLIPPED
|
|
LET tmp_dirfoto = "TMP\\",dir_foto CLIPPED
|
|
DISPLAY BY NAME filepath
|
|
CALL fgl_getfile(filepath,tmp_dirfoto)
|
|
# CALL FGL_WINMESSAGE("INFO",filepath,"info")
|
|
CALL ffoto.readfile(tmp_dirfoto)
|
|
|
|
DISPLAY tmp_dirfoto TO s_requisi2[scr_line()].ruta_file
|
|
LET arr_requisi2[curr].foto = ffoto
|
|
|
|
LET arr_requisi2[curr].ruta_file=dir_foto CLIPPED
|
|
END IF
|
|
ELSE
|
|
LOCATE arr_requisi2[curr].foto IN MEMORY
|
|
LET dir_foto = os.Path.basename(filepath)
|
|
LET extension_foto = os.Path.extension(filepath)
|
|
LET dir_foto = usuarios CLIPPED,dir_foto CLIPPED
|
|
LET tmp_dirfoto = "TMP\\",dir_foto CLIPPED
|
|
DISPLAY BY NAME filepath
|
|
CALL fgl_getfile(filepath,tmp_dirfoto)
|
|
# CALL FGL_WINMESSAGE("INFO",filepath,"info")
|
|
CALL arr_requisi2[curr].foto.readfile(tmp_dirfoto)
|
|
|
|
DISPLAY tmp_dirfoto TO s_requisi2[scr_line()].ruta_file
|
|
# LET arr_requisi2[curr].foto = ffoto
|
|
|
|
LET arr_requisi2[curr].ruta_file=dir_foto CLIPPED
|
|
|
|
END IF
|
|
ON ACTION producto
|
|
LET curr = arr_curr()
|
|
|
|
IF arr_requisi2[curr].tipo_inv IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD tipo_inv
|
|
END IF
|
|
CALL busca_mt(arr_requisi2[curr].tipo_inv)
|
|
RETURNING arr_requisi2[curr].cod_n,arr_requisi2[curr].cod_grupo,arr_requisi2[curr].cod_tipo,
|
|
arr_requisi2[curr].cod_sec,arr_requisi2[curr].descrip_esp,arr_requisi2[curr].unidad_med
|
|
|
|
|
|
{ se cerro la creacion de codigos miscelaneos via la requisicion de compras
|
|
IF arr_requisi2[curr].tipo_inv = 'MISCELANEOS' AND arr_requisi2[curr].cod_n = 0 THEN
|
|
CALL fgl_winmessage("INFO","NO EXISTEN PRODUCTOS CON ESA CONDICION, VAS A CREARLO","INFO")
|
|
CALL crea_producto() RETURNING arr_requisi2[curr].cod_n,arr_requisi2[curr].cod_grupo,arr_requisi2[curr].cod_tipo,
|
|
arr_requisi2[curr].cod_sec,arr_requisi2[curr].descrip_esp,arr_requisi2[curr].unidad_med
|
|
|
|
END IF
|
|
}
|
|
DISPLAY arr_requisi2[curr].cod_n TO
|
|
s_requisi2[scr_l].cod_n
|
|
DISPLAY arr_requisi2[curr].cod_grupo TO
|
|
s_requisi2[scr_l].cod_grupo
|
|
DISPLAY arr_requisi2[curr].cod_tipo TO
|
|
s_requisi2[scr_l].cod_tipo
|
|
DISPLAY arr_requisi2[curr].cod_sec TO
|
|
s_requisi2[scr_l].cod_sec
|
|
DISPLAY arr_requisi2[curr].descrip_esp TO
|
|
s_requisi2[scr_l].descrip_esp
|
|
DISPLAY arr_requisi2[curr].unidad_med TO
|
|
s_requisi2[scr_l].unidad_med
|
|
|
|
|
|
LET c_cuenta = arr_requisi2.getLength()
|
|
CALL repite2()
|
|
IF verdad = "S" THEN
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
IF verdad = "N" OR verdad is null THEN
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
LET proveedor_sugerido = NULL
|
|
IF arr_requisi2[curr].cod_sec IS NOT NULL THEN
|
|
CALL busca_proveedor()
|
|
END IF
|
|
AFTER ROW
|
|
IF actualiza ="NO" THEN
|
|
IF arr_requisi2[curr].ruta_file IS NOT NULL THEN
|
|
LET tmp_dirfoto = "tmp\\",arr_requisi2[arr_curr()].ruta_file CLIPPED
|
|
CALL arr_requisi2[arr_curr()].foto.writeFile(tmp_dirfoto)
|
|
DISPLAY tmp_dirfoto TO filepath
|
|
ELSE
|
|
IF arr_requisi2[arr_curr()].ruta_file IS NULL AND arr_requisi2[arr_curr()].cod_sec IS NOT NULL THEN
|
|
LOCATE arr_requisi2[arr_curr()].foto IN MEMORY
|
|
END IF
|
|
END IF
|
|
END IF
|
|
BEFORE ROW
|
|
LET nocalcula = "N"
|
|
LET curr = arr_curr()
|
|
LET scr_l = scr_line()
|
|
# LOCATE arr_requisi2[curr].foto IN MEMORY
|
|
IF actualiza = "SI" THEN
|
|
# LOCATE arr_requisi2[curr].foto IN MEMORY
|
|
IF arr_requisi2[curr].ruta_file IS NOT NULL THEN
|
|
|
|
CALL ui.Interface.frontCall("standard","getenv", ["HOMEPATH"], [l_file] )
|
|
LET dir_foto =arr_requisi2[curr].ruta_file
|
|
LET l_file = "c:",l_file CLIPPED,"\\",dir_foto CLIPPED
|
|
# CALL fgl_Winmessage("info",dir_foto,"info")
|
|
CALL arr_requisi2[curr].foto.writeFile(dir_foto)
|
|
|
|
DISPLAY dir_foto TO filepath
|
|
|
|
END IF
|
|
ELSE
|
|
IF arr_requisi2[curr].ruta_file IS NOT NULL THEN
|
|
|
|
LET tmp_dirfoto = "tmp\\",arr_requisi2[curr].ruta_file CLIPPED
|
|
CALL arr_requisi2[curr].foto.writeFile(tmp_dirfoto)
|
|
DISPLAY tmp_dirfoto TO filepath
|
|
ELSE
|
|
LOCATE arr_requisi2[curr].foto IN MEMORY
|
|
END IF
|
|
END IF
|
|
|
|
AFTER FIELD cod_sec
|
|
|
|
IF orden_trabajo IS NOT NULL THEN
|
|
IF arr_requisi2[curr].cod_n is not null AND
|
|
arr_requisi2[curr].cod_grupo is not null AND
|
|
arr_requisi2[curr].cod_tipo is not null AND
|
|
arr_requisi2[curr].cod_sec is not null THEN
|
|
|
|
INITIALIZE answer TO NULL
|
|
SELECT enviarMX INTO answer FROM irtb00002 WHERE cod_n = arr_requisi2[curr].cod_n
|
|
AND cod_grupo = arr_requisi2[curr].cod_grupo AND cod_tipo = arr_requisi2[curr].cod_tipo
|
|
AND cod_sec = arr_requisi2[curr].cod_sec
|
|
|
|
DISPLAY answer
|
|
|
|
IF answer IS NULL THEN
|
|
CALL fgl_winmessage(
|
|
"PRODUCTO NO ENCONTRADO EN MAINTAINX",
|
|
"El producto insertado no se encuentra en MaintainX",
|
|
"stop")
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
INITIALIZE container TO NULL
|
|
|
|
LET container.cod_n = arr_requisi2[curr].cod_n
|
|
LET container.cod_grupo = arr_requisi2[curr].cod_grupo
|
|
LET container.cod_tipo = arr_requisi2[curr].cod_tipo
|
|
LET container.cod_sec = arr_requisi2[curr].cod_sec
|
|
LET container.tipo_inv = arr_requisi2[curr].tipo_inv
|
|
|
|
LET int_flag = TRUE
|
|
CALL checkProducts() RETURNING int_flag
|
|
|
|
IF int_flag = FALSE THEN
|
|
LET numero_msg = 1676
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
|
|
CALL producto(arr_requisi2[curr].tipo_inv,arr_requisi2[curr].cod_n,arr_requisi2[curr].cod_grupo,
|
|
arr_requisi2[curr].cod_tipo,arr_requisi2[curr].cod_sec)
|
|
RETURNING arr_requisi2[curr].descrip_esp,arr_requisi2[curr].unidad_med
|
|
|
|
DISPLAY arr_requisi2[curr].descrip_esp TO
|
|
s_requisi2[scr_l].descrip_esp
|
|
DISPLAY arr_requisi2[curr].unidad_med TO
|
|
s_requisi2[scr_l].unidad_med
|
|
|
|
DISPLAY BY NAME arr_requisi2[curr].unidad_med
|
|
DISPLAY BY NAME arr_requisi2[curr].descrip_esp
|
|
|
|
LET arr_requisi[curr].cod_n = arr_requisi2[curr].cod_n
|
|
LET arr_requisi[curr].cod_grupo = arr_requisi2[curr].cod_grupo
|
|
LET arr_requisi[curr].cod_tipo = arr_requisi2[curr].cod_tipo
|
|
LET arr_requisi[curr].cod_sec = arr_requisi2[curr].cod_sec
|
|
|
|
|
|
LET verdad = "N"
|
|
|
|
CALL repite2()
|
|
|
|
IF verdad = "S" THEN
|
|
LET verdad = "N"
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
|
|
AFTER FIELD cantidad
|
|
IF arr_requisi2[curr].cantidad IS NULL THEN
|
|
IF arr_requisi2[curr].cod_n IS NOT NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
END IF
|
|
IF nocalcula = "N" THEN
|
|
IF arr_requisi2[curr].cod_n = 1 THEN
|
|
SELECT UNIQUE a.cantidad INTO cantidad_fur
|
|
FROM cotb00004 a
|
|
WHERE a.cod_n = arr_requisi2[curr].cod_n AND
|
|
a.cod_grupo = arr_requisi2[curr].cod_grupo AND
|
|
a.cod_tipo = arr_requisi2[curr].cod_tipo AND
|
|
a.cod_sec = arr_requisi2[curr].cod_sec
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
IF arr_requisi2[curr].cantidad > cantidad_fur THEN
|
|
LET multiplo = arr_requisi2[curr].cantidad / cantidad_fur
|
|
LET pmultiplo = multiplo USING "#####"
|
|
LET arr_requisi2[curr].cantidad = cantidad_fur * pmultiplo
|
|
ELSE
|
|
LET arr_requisi2[curr].cantidad = cantidad_fur
|
|
END IF
|
|
END IF
|
|
DISPLAY arr_requisi2[curr].cantidad TO s_requisi2[scr_l].cantidad
|
|
END IF
|
|
|
|
END IF
|
|
LET proveedor_sugerido = NULL
|
|
IF arr_requisi2[curr].cod_sec IS NOT NULL THEN
|
|
CALL busca_proveedor()
|
|
END IF
|
|
AFTER FIELD tipo_inv
|
|
IF arr_requisi2[curr].tipo_inv IS NOT NULL THEN
|
|
IF requisi2.num_oc IS NOT NULL THEN
|
|
LET arr_requisi2[curr].tipo_inv = 'PRODUCTO TERMINADOS'
|
|
END IF
|
|
END IF
|
|
|
|
IF arr_requisi2[curr].tipo_inv IS NULL THEN
|
|
LET numero_msg = 16
|
|
CALL msg(numero_msg)
|
|
NEXT FIELD tipo_inv
|
|
END IF
|
|
|
|
|
|
ON ACTION guardar ATTRIBUTE(TEXT="Salvar", IMAGE="save")
|
|
IF actualiza = "NO" THEN
|
|
LET opt = fgl_winquestion("ADICIONA","ESTA SEGURO DE ADICIONAR ESTA REQUISICION?","NO","YES|NO","QUESTION",0)
|
|
IF opt = "YES" THEN
|
|
LET proveedor_sugerido = NULL
|
|
|
|
BEGIN WORK
|
|
|
|
FOR idx = 1 TO arr_requisi2.getLength()
|
|
IF arr_requisi2[idx].cod_sec IS NOT NULL THEN
|
|
CALL busca_proveedor()
|
|
END IF
|
|
|
|
END FOR
|
|
SELECT a.num_req INTO ult_req FROM cotb00007 a
|
|
IF STATUS = NOTFOUND THEN
|
|
LET ult_req = 0
|
|
INSERT INTO cotb00007 (num_req,us_crea,fech_crea) VALUES (0,usuarios,getdate())
|
|
END IF
|
|
LET ult_req = ult_req + 1
|
|
|
|
UPDATE cotb00007 SET num_req = ult_req,us_crea = usuarios,fech_crea = getdate()
|
|
LET requisi2.num_req = ult_req
|
|
DISPLAY BY NAME requisi2.num_req
|
|
|
|
INSERT INTO cotb00006 (num_req,fech_req,departamento,cod_emp_sec,uso,prioridad,us_crea,fech_crea,num_oc,tipo_cliente,sec_cliente,nombre_cliente,
|
|
observacion,nombre_file,documento,proveedor,estado, orden_trabajo, depto_destino)
|
|
VALUES (
|
|
requisi2.num_req,
|
|
requisi2.fech_req,
|
|
requisi2.departamento,
|
|
requisi2.cod_emp_sec,
|
|
requisi2.uso,
|
|
requisi2.prioridad,
|
|
suser_sname(),getdate(),requisi2.num_oc,ktipo_cliente,ksec_cliente,knombre,
|
|
requisi2.observacion,dir_file,fdocumento,proveedor_sugerido,requisi2.estado, orden_trabajo, depto)
|
|
|
|
# Asigna el numero serial de la requisicion cabecera para luego asignarsela
|
|
# a cada uno de los registros detalle de la requisicion.
|
|
|
|
IF dir_file IS NOT NULL THEN
|
|
LET dir_file = requisi2.num_req USING "&&&&&&&&",".",extension CLIPPED
|
|
UPDATE cotb00006 SET nombre_file = dir_file WHERE num_req = requisi2.num_req
|
|
END IF
|
|
|
|
# LET requisi2.num_req = SQLCA.SQLERRD[2]
|
|
IF requisi2.num_req =0 THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_n
|
|
END IF
|
|
LET inserteDetalle='NO'
|
|
FOR idx = 1 TO arr_requisi2.getLength()
|
|
IF arr_requisi2[idx].cod_n IS NOT NULL AND
|
|
arr_requisi2[idx].cod_grupo IS NOT NULL AND
|
|
arr_requisi2[idx].cod_tipo IS NOT NULL AND
|
|
arr_requisi2[idx].cod_sec IS NOT NULL THEN
|
|
|
|
IF arr_requisi2[idx].cantidad IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
LET inserteDetalle = 'SI'
|
|
|
|
IF orden_trabajo IS NOT NULL THEN
|
|
|
|
LET data.contactID = arr_requisi2[idx].cantidad
|
|
|
|
SELECT id_maintainx INTO data.id_maintainx FROM irtb00002 WHERE cod_n = arr_requisi2[idx].cod_n
|
|
AND cod_grupo = arr_requisi2[idx].cod_grupo AND cod_tipo = arr_requisi2[idx].cod_tipo
|
|
AND cod_sec = arr_requisi2[idx].cod_sec AND status_t IS NULL
|
|
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
|
|
CALL fgl_winmessage("REPUESTO NO ESTA EN MAINTAINX",
|
|
"Por lo menos uno de los repuestos colocados en la requisicion no esta en MaintainX",
|
|
"stop")
|
|
ROLLBACK WORK
|
|
|
|
ELSE
|
|
|
|
CALL ApiMaintainC('PATCH_WORKORDER',answer_workorder, Data.*, usuarios)
|
|
RETURNING answer
|
|
|
|
IF answer != 1 THEN
|
|
DISPLAY "AQUI PATCH_WORKORDER"
|
|
ROLLBACK WORK
|
|
END IF
|
|
END IF
|
|
END IF
|
|
|
|
INSERT INTO cotb00008
|
|
(num_req
|
|
,tipo_inv
|
|
,cod_n
|
|
,cod_grupo
|
|
,cod_tipo
|
|
,cod_sec
|
|
,cantidad
|
|
,us_crea
|
|
,fech_crea
|
|
,procesada
|
|
,documento
|
|
,ruta_file
|
|
)
|
|
VALUES (requisi2.num_req,arr_requisi2[idx].tipo_inv,
|
|
arr_requisi2[idx].cod_n,
|
|
arr_requisi2[idx].cod_grupo,
|
|
arr_requisi2[idx].cod_tipo,
|
|
arr_requisi2[idx].cod_sec,
|
|
arr_requisi2[idx].cantidad,
|
|
suser_sname(),getdate(),'N',arr_requisi2[idx].foto,
|
|
arr_requisi2[idx].ruta_file)
|
|
|
|
|
|
END IF
|
|
END FOR
|
|
IF inserteDetalle='NO' THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_n
|
|
ELSE
|
|
UPDATE seg0001 SET seg0001.notificacion = notifica WHERE usuario = usuarios
|
|
COMMIT WORK
|
|
|
|
CALL seleccionarsalida() RETURNING salida
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
|
|
START REPORT print_req TO XML HANDLER HANDLER
|
|
|
|
PREPARE query FROM
|
|
"SELECT nom_dpto FROM adtb00001 WHERE departamento = " || requisi2.departamento
|
|
|
|
EXECUTE query INTO descrip1
|
|
|
|
PREPARE query FROM
|
|
"SELECT nom_dpto FROM adtb00001 WHERE departamento = ?"
|
|
|
|
EXECUTE query USING depto INTO descrip_depto
|
|
|
|
|
|
FOR idx = 1 TO arr_requisi2.getLength()
|
|
|
|
OUTPUT TO REPORT print_req(requisi2.*, descrip1, descrip2, descrip3,
|
|
arr_requisi2[idx].*, orden_trabajo,depto,descrip_depto)
|
|
END FOR
|
|
|
|
FINISH REPORT print_req
|
|
call arr_requisi2.clear()
|
|
|
|
LET numero_msg = 1
|
|
CALL msg(numero_msg)
|
|
IF notifica = 'SI' THEN
|
|
#LET toEmail = 'jsoto@marmotech.com.do,jsoto@movilsoluciones.com.do,'
|
|
LET xusername ='notificacion@marmotech.com.do'
|
|
LET xsmtphost ='smtp.office365.com'
|
|
LET xsmtpport = '587'
|
|
LET xpassword = 'Lmmjvsd2020'
|
|
# LET vendedoremail = 'gespinal@marmotech.com.do;jsoto@marmotech.com.do'
|
|
|
|
LET subject = "ADICION RQUISICION COMPRAS ",requisi2.num_req USING "&&&&&&&"
|
|
LET cuerpo_correo="<!DOCTYPE html><body>", "<h1> ADICION REQUISICION COMPRAS NO. ",requisi2.num_req USING "&&&&&&&&",
|
|
"</h1><div><h2>",
|
|
"FUE ADICIONADA POR EL USUARIO ",xnombreusuario CLIPPED,"</h2></div>",
|
|
"<div><h2>",requisi2.uso CLIPPED,"</h2></div>",
|
|
"<div><h2>",requisi2.observacion CLIPPED,"</h2></div>"
|
|
IF dir_file IS NOT NULL THEN
|
|
LET cuerpo_correo = cuerpo_correo CLIPPED, "<div><h2>ESTA REQUISICION INCLUYE DOCUMENTO</h2></div>"
|
|
|
|
END IF
|
|
LET attachment = null
|
|
CALL enviaemail(toEmail,subject,cuerpo_correo,attachment,xusername,xsmtphost,xsmtpport,xpassword)
|
|
#RETURNING mensaje
|
|
END IF
|
|
# LET procedimiento = "{ call sp_enviacorreo(?,?,?,?) }" CLIPPED
|
|
|
|
# CALL envia_correo('yherasme@marmotech.com.do',vendedorEmail,cuerpo_correo,
|
|
# subject, procedimiento )
|
|
END IF
|
|
END IF
|
|
#-------------------------- ADICIONAR ------------------------------------
|
|
ELSE
|
|
LET opt = fgl_winquestion("MODIFICACION","ESTA SEGURO DE ACTUALIZAR ESTA REQUISICION?","NO","YES|NO","QUESTION",0)
|
|
IF opt = "YES" THEN
|
|
|
|
BEGIN WORK
|
|
UPDATE cotb00006 set (departamento,cod_emp_sec,uso,prioridad,us_mod,fech_mod,observacion,
|
|
nombre_file,documento,num_oc,tipo_cliente,sec_cliente,proveedor,estado)=
|
|
(requisi2.departamento,requisi2.cod_emp_sec,requisi2.uso,requisi2.prioridad,usuarios,getdate(),
|
|
requisi2.observacion,dir_file,fdocumento,requisi2.num_oc,ktipo_cliente,
|
|
ksec_cliente,proveedor_sugerido,requisi2.estado )
|
|
WHERE num_req = requisi2.num_req
|
|
|
|
LET inserteDetalle='NO'
|
|
DELETE FROM cotb00008 WHERE num_req = requisi2.num_req
|
|
FOR idx = 1 TO arr_requisi2.getLength()
|
|
IF arr_requisi2[idx].cod_n IS NOT NULL AND
|
|
arr_requisi2[idx].cod_grupo IS NOT NULL AND
|
|
arr_requisi2[idx].cod_tipo IS NOT NULL AND
|
|
arr_requisi2[idx].cod_sec IS NOT NULL THEN
|
|
IF arr_requisi2[idx].ruta_file IS NULL THEN
|
|
LOCATE arr_requisi2[idx].foto IN MEMORY
|
|
END IF
|
|
IF arr_requisi2[idx].cantidad IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cantidad
|
|
END IF
|
|
LET inserteDetalle='SI'
|
|
INSERT INTO cotb00008
|
|
(num_req
|
|
,tipo_inv
|
|
,cod_n
|
|
,cod_grupo
|
|
,cod_tipo
|
|
,cod_sec
|
|
,cantidad
|
|
,us_crea
|
|
,fech_crea
|
|
,procesada
|
|
,documento
|
|
,ruta_file
|
|
)
|
|
VALUES (requisi2.num_req,arr_requisi2[idx].tipo_inv,
|
|
arr_requisi2[idx].cod_n,
|
|
arr_requisi2[idx].cod_grupo,
|
|
arr_requisi2[idx].cod_tipo,
|
|
arr_requisi2[idx].cod_sec,
|
|
arr_requisi2[idx].cantidad,
|
|
suser_sname(),getdate(),'N',arr_requisi2[idx].foto,
|
|
arr_requisi2[idx].ruta_file)
|
|
|
|
END IF
|
|
END FOR
|
|
IF inserteDetalle = 'NO' THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD cod_n
|
|
ELSE
|
|
UPDATE seg0001 SET seg0001.notificacion = notifica WHERE usuario = usuarios
|
|
COMMIT WORK
|
|
|
|
CALL seleccionarsalida() RETURNING salida
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
START REPORT print_req TO XML HANDLER HANDLER
|
|
|
|
PREPARE query FROM
|
|
"SELECT nom_dpto FROM adtb00001 WHERE departamento = " || requisi2.departamento
|
|
|
|
EXECUTE query INTO descrip1
|
|
|
|
PREPARE query FROM
|
|
"SELECT nom_dpto FROM adtb00001 WHERE departamento = ?"
|
|
|
|
EXECUTE query USING depto INTO descrip_depto
|
|
|
|
FOR idx = 1 TO arr_requisi2.getLength()
|
|
OUTPUT TO REPORT print_req(requisi2.*, descrip1, descrip2, descrip3,
|
|
arr_requisi2[idx].*, orden_trabajo,depto, descrip_depto)
|
|
END FOR
|
|
|
|
FINISH REPORT print_req
|
|
LET numero_msg = 13
|
|
CALL msg(numero_msg)
|
|
IF notifica = "SI" THEN
|
|
# LET toEmail = 'jsoto@marmotech.com.do'
|
|
LET xusername ='notificacion@marmotech.com.do'
|
|
LET xsmtphost ='smtp.office365.com'
|
|
LET xsmtpport = '587'
|
|
LET xpassword = 'Lmmjvsd2020'
|
|
# LET vendedoremail = 'gespinal@marmotech.com.do;jsoto@marmotech.com.do'
|
|
|
|
LET subject = "MODIFICAION RQUISICION COMPRAS ",requisi2.num_req USING "&&&&&&&"
|
|
# LET cuerpo_correo = 'FUE ADICIONADA POR EL EMPLEADO',descrip1 CLIPPED
|
|
LET cuerpo_correo="<!DOCTYPE html><body>", "<h1> MODIFIACION REQUISICION COMPRAS NO. ",requisi2.num_req USING "&&&&&&&&",
|
|
"</h1><div><h2>",
|
|
"FUE MODIFICADA POR EL USUARIO ",xnombreusuario CLIPPED,"</h2></div>",
|
|
"<div><h2>",requisi2.uso CLIPPED,"</h2></div>",
|
|
"<div><h2>",requisi2.observacion CLIPPED,"</h2></div>"
|
|
|
|
IF dir_file IS NOT NULL THEN
|
|
LET cuerpo_correo = cuerpo_correo CLIPPED, "<div><h2>ESTA REQUISICION INCLUYE DOCUMENTO</h2></div>"
|
|
|
|
END IF
|
|
LET attachment = null
|
|
CALL enviaemail(toEmail,subject,cuerpo_correo,attachment,xusername,xsmtphost,xsmtpport,xpassword)
|
|
# RETURNING mensaje
|
|
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
# LET commandprompt = "del ",dir_file CLIPPED
|
|
# RUN commandprompt
|
|
CALL arr_requisi2.clear()
|
|
|
|
RETURN
|
|
END INPUT
|
|
|
|
ON ACTION CANCEL
|
|
LET INT_FLAG = FALSE
|
|
EXIT PROGRAM
|
|
|
|
END DIALOG
|
|
|
|
END FUNCTION
|
|
|
|
FUNCTION copcmf025()
|
|
DEFINE usuario RECORD
|
|
usuario CHAR(50),
|
|
fecha LIKE cotb00008.fech_crea
|
|
END RECORD,
|
|
bempleados string
|
|
# Aqui se prepara para la captura del criterio de seleccion
|
|
|
|
CONSTRUCT criterio ON cotb00006.num_req,cotb00006.fech_req,
|
|
cotb00006.departamento,cotb00006.cod_emp_sec,
|
|
cotb00006.uso
|
|
FROM num_req,fech_req,departamento,cod_emp_sec,uso
|
|
|
|
AFTER CONSTRUCT
|
|
EXIT CONSTRUCT
|
|
END CONSTRUCT
|
|
|
|
CALL busca_departamento2()
|
|
|
|
IF int_flag THEN
|
|
LET numero_msg = 2
|
|
CALL msg(numero_msg)
|
|
LET int_flag = false
|
|
RETURN
|
|
END IF
|
|
LET bempleados ="
|
|
SELECT RTRIM(a.nom1_emp)+' '+a.apell1_emp
|
|
FROM adtb00003 a,adtb00001 b
|
|
WHERE a.num_emp =? and
|
|
b.departamento =? and
|
|
a.departamento = b.departamento"
|
|
|
|
PREPARE buempleados FROM bempleados
|
|
|
|
LET SELEC = " SELECT num_req,fech_req,departamento,",
|
|
"cod_emp_sec,estado,uso,prioridad,num_oc,observacion,tipo_cliente,sec_cliente,nombre_cliente, ",
|
|
" nombre_file,documento,proveedor, orden_trabajo, depto_destino ",
|
|
" FROM cotb00006 ",
|
|
" WHERE ",
|
|
criterio clipped,
|
|
# " AND us_crea = suser_sname() ",
|
|
" and status_t is null ",
|
|
" ORDER BY num_req"
|
|
|
|
PREPARE busca8 FROM selec
|
|
|
|
DECLARE datos SCROLL CURSOR FOR busca8
|
|
|
|
OPEN datos
|
|
|
|
LOCATE fdocumento IN MEMORY
|
|
INITIALIZE requisi2.* TO NULL
|
|
|
|
FETCH FIRST datos INTO requisi2.*,ktipo_cliente,ksec_cliente,knombre,dir_file,fdocumento,proveedor_sugerido, orden_trabajo, depto
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 3
|
|
CALL msg(numero_msg)
|
|
RETURN
|
|
END IF
|
|
|
|
SELECT a.nom_dpto INTO descrip1 FROM adtb00001 a
|
|
WHERE a.departamento = requisi2.departamento and
|
|
a.status_t is NULL
|
|
|
|
EXECUTE buempleados INTO descrip2 USING requisi2.cod_emp_sec,requisi2.departamento
|
|
|
|
CALL busca_orden()
|
|
|
|
DISPLAY BY NAME requisi2.*,descrip1,descrip2,dir_file,proveedor_sugerido, orden_trabajo, depto
|
|
|
|
DIALOG ATTRIBUTE (UNBUFFERED)
|
|
DISPLAY ARRAY arr_requisi2 TO s_requisi2.*
|
|
BEFORE ROW
|
|
LET curr = arr_curr()
|
|
|
|
IF arr_requisi2[curr].ruta_file IS NOT NULL THEN
|
|
|
|
CALL ui.Interface.frontCall("standard","getenv", ["HOMEPATH"], [l_file] )
|
|
LET dir_foto =arr_requisi2[curr].ruta_file
|
|
LET l_file = "c:",l_file CLIPPED,"\\",dir_foto CLIPPED
|
|
CALL arr_requisi2[curr].foto.writeFile(dir_foto)
|
|
|
|
DISPLAY dir_foto TO filepath
|
|
|
|
END IF
|
|
|
|
BEFORE DISPLAY
|
|
CALL arr_requisi2.clear()
|
|
CALL busca_det_req()
|
|
|
|
# MENU "OPCIONES "
|
|
ON ACTION bdocumento
|
|
LET dir_file = NULL
|
|
|
|
CALL ui.Interface.frontCall("standard","openfile", [dir_file,d_tipos,f_tipos,mensaje], [filepath] )
|
|
|
|
IF filepath IS NOT NULL THEN
|
|
LET dir_file = os.Path.basename(filepath)
|
|
LET tmpdir_file = "tmp\\",dir_file CLIPPED
|
|
|
|
CALL fgl_getfile(filepath,tmpdir_file)
|
|
|
|
CALL fdocumento.readfile(tmpdir_file)
|
|
LET extension = os.Path.extension(dir_file)
|
|
LET dir_file = requisi2.num_req USING "&&&&&&&&",".",extension CLIPPED
|
|
DISPLAY BY NAME dir_file
|
|
|
|
|
|
END IF
|
|
|
|
ON ACTION bborrar
|
|
UPDATE cotb00006 SET nombre_file = NULL,documento = NULL WHERE num_req = requisi2.num_req
|
|
LET dir_file = NULL
|
|
DISPLAY BY NAME dir_file
|
|
ON ACTION bopen
|
|
IF dir_file IS NOT NULL THEN
|
|
LET tmpdir_file = "tmp\\",usuarios CLIPPED,dir_file CLIPPED
|
|
CALL fdocumento.writeFile(tmpdir_file)
|
|
|
|
#CALL ui.Interface.frontCall("standard","getenv", ["HOMEPATH"], [l_file] )
|
|
CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] )
|
|
LET l_file = l_file CLIPPED,"\\",dir_file CLIPPED
|
|
|
|
CALL fgl_putfile(tmpdir_file,l_file)
|
|
|
|
CALL ui.Interface.frontCall("standard","shellexec", [l_file],[p_res])
|
|
# CALL fgl_winmessage("info",p_res,"info")
|
|
END IF
|
|
ON ACTION Siguiente
|
|
FETCH NEXT datos INTO requisi2.*,ktipo_cliente,ksec_cliente,knombre,dir_file,fdocumento,proveedor_sugerido , orden_trabajo, depto
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
SELECT a.nom_dpto INTO descrip1 FROM adtb00001 a
|
|
WHERE a.departamento = requisi2.departamento and
|
|
a.status_t is NULL
|
|
|
|
EXECUTE buempleados INTO descrip2 USING requisi2.cod_emp_sec,requisi2.departamento
|
|
CALL busca_orden()
|
|
|
|
DISPLAY BY NAME requisi2.*,descrip1,descrip2,dir_file,proveedor_sugerido, orden_trabajo, depto
|
|
CALL arr_requisi2.clear()
|
|
CALL busca_det_req()
|
|
|
|
ON ACTION Anterior
|
|
FETCH PREVIOUS datos INTO requisi2.*,ktipo_cliente,ksec_cliente,knombre,dir_file,fdocumento,proveedor_sugerido, orden_trabajo, depto
|
|
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
SELECT nom_dpto INTO descrip1 FROM adtb00001
|
|
WHERE @departamento = requisi2.departamento and
|
|
status_t is null
|
|
|
|
EXECUTE buempleados INTO descrip2 USING requisi2.cod_emp_sec,requisi2.departamento
|
|
CALL busca_orden()
|
|
|
|
DISPLAY BY NAME requisi2.*,descrip1,descrip2,dir_file,proveedor_sugerido, orden_trabajo, depto
|
|
CALL arr_requisi2.clear()
|
|
CALL busca_det_req()
|
|
|
|
ON ACTION Primero
|
|
FETCH FIRST datos INTO requisi2.*,ktipo_cliente,ksec_cliente,knombre,dir_file,fdocumento,proveedor_sugerido, orden_trabajo, depto
|
|
IF status = NOTFOUND THEN
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
END IF
|
|
|
|
SELECT nom_dpto INTO descrip1 FROM adtb00001
|
|
WHERE @departamento = requisi2.departamento and
|
|
status_t is NULL
|
|
|
|
EXECUTE buempleados INTO descrip2 USING requisi2.cod_emp_sec,requisi2.departamento
|
|
CALL busca_orden()
|
|
|
|
DISPLAY BY NAME requisi2.*,descrip1,descrip2,dir_file,proveedor_sugerido, orden_trabajo, depto
|
|
CALL arr_requisi2.clear()
|
|
CALL busca_det_req()
|
|
|
|
LET numero_msg = 5
|
|
CALL msg(numero_msg)
|
|
|
|
ON ACTION Ultimo
|
|
FETCH LAST datos INTO requisi2.*,ktipo_cliente,ksec_cliente,knombre,dir_file,fdocumento,proveedor_sugerido, orden_trabajo, depto
|
|
|
|
SELECT a.nom_dpto INTO descrip1 FROM adtb00001 a
|
|
WHERE a.departamento = requisi2.departamento and
|
|
a.status_t is null
|
|
|
|
EXECUTE buempleados INTO descrip2 USING requisi2.cod_emp_sec,requisi2.departamento
|
|
|
|
CALL busca_orden()
|
|
DISPLAY BY NAME requisi2.*,descrip1,descrip2,dir_file,proveedor_sugerido, orden_trabajo, depto
|
|
CALL arr_requisi2.clear()
|
|
CALL busca_det_req()
|
|
|
|
LET numero_msg = 4
|
|
CALL msg(numero_msg)
|
|
ON ACTION acTualizar
|
|
# Verifica si la requisicion tiene orden
|
|
SELECT UNIQUE a.num_req FROM cotb00015 a WHERE a.num_req = requisi2.num_req AND a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL fgl_winmessage("INFO","REQUISICION TIENE ORDEN, NO PUEDES MODIFICARLA","INFO")
|
|
CONTINUE DIALOG
|
|
END IF
|
|
|
|
CALL copcad025()
|
|
|
|
|
|
ON ACTION impresor
|
|
IF salida IS NULL THEN
|
|
LET salida = 'PDF'
|
|
END IF
|
|
CALL configureoutput(salida) RETURNING HANDLER
|
|
START REPORT print_req TO XML HANDLER HANDLER
|
|
|
|
PREPARE query FROM
|
|
"SELECT nom_dpto FROM adtb00001 WHERE departamento = ?"
|
|
|
|
EXECUTE query USING requisi2.departamento INTO descrip1
|
|
|
|
PREPARE query FROM
|
|
"SELECT nom_dpto FROM adtb00001 WHERE departamento = ?"
|
|
|
|
EXECUTE query USING depto INTO descrip_depto
|
|
|
|
FOR idx = 1 TO arr_requisi2.getLength()
|
|
OUTPUT TO REPORT print_req(requisi2.*, descrip1, descrip2, descrip3,
|
|
arr_requisi2[idx].*, orden_trabajo,depto, descrip_depto)
|
|
END FOR
|
|
|
|
FINISH REPORT print_req
|
|
|
|
ON ACTION aNular
|
|
SELECT DISTINCT a.num_req FROM cotb00015 a WHERE a.num_req = requisi2.num_req AND a.status_t IS NULL
|
|
IF STATUS <> NOTFOUND THEN
|
|
CALL msg(1004)
|
|
CONTINUE DIALOG
|
|
END IF
|
|
LET opt = fgl_winquestion("ANULAR","ESTA SEGURO DE ANULAR REQUISICION?","NO","YES|NO","QUESTION",0)
|
|
IF opt = "YES" THEN
|
|
|
|
UPDATE cotb00006 set status_t = "N",
|
|
us_mod = suser_sname(),
|
|
fech_mod = getdate()
|
|
WHERE num_req = requisi2.num_req
|
|
|
|
|
|
UPDATE cotb00008 set status_t = "E",
|
|
us_mod = suser_sname(),
|
|
fech_mod = getdate()
|
|
WHERE num_req = requisi2.num_req
|
|
|
|
|
|
LET numero_msg = 39
|
|
CALL msg(numero_msg)
|
|
|
|
LET procedimiento = "{ call cc_avisadespacho(?,?,?,?) }" CLIPPED
|
|
LET vendedoremail = 'gespinal@marmotech.com.do;jsoto@marmotech.com.do'
|
|
LET subject = "ANULACION RQUISICION COMPRAS ",requisi2.num_req USING "&&&&&&&"
|
|
|
|
LET cuerpo_correo="<tr><th>","FUE ANULADA POR EL EMPLEADO ",descrip1 CLIPPED,"</tr>",
|
|
"<tr><td>",requisi2.uso CLIPPED,"</td></tr>",
|
|
"<tr><td>",requisi2.observacion CLIPPED,"</td></tr>"
|
|
|
|
CALL envia_correo('yherasme@marmotech.com.do',vendedorEmail,cuerpo_correo,
|
|
subject, procedimiento )
|
|
END IF
|
|
|
|
{ ON ACTION Retornar
|
|
|
|
LET commandprompt = "del c:",l_file CLIPPED
|
|
DISPLAY "commnad ",commandprompt
|
|
CALL ui.Interface.frontCall( "standard", "execute", [commandprompt,p_res], [p_res] )
|
|
# LET commandprompt = "del ", dir_file CLIPPED
|
|
# RUN commandprompt
|
|
CLEAR FORM}
|
|
ON ACTION CANCEL
|
|
RETURN
|
|
END DISPLAY
|
|
END DIALOG
|
|
END FUNCTION
|
|
|
|
FUNCTION repite2()
|
|
LET ant_art.cod_n = arr_requisi2[curr].cod_n
|
|
LET ant_art.cod_grupo = arr_requisi2[curr].cod_grupo
|
|
LET ant_art.cod_tipo = arr_requisi2[curr].cod_tipo
|
|
LET ant_art.cod_sec = arr_requisi2[curr].cod_sec
|
|
|
|
FOR idx = 1 TO c_cuenta
|
|
IF idx < 10 THEN
|
|
IF idx != curr THEN
|
|
IF arr_requisi2[idx].cod_n IS NOT NULL AND
|
|
arr_requisi2[idx].cod_grupo IS NOT NULL AND
|
|
arr_requisi2[idx].cod_tipo IS NOT NULL AND
|
|
arr_requisi2[idx].cod_sec IS NOT NULL THEN
|
|
|
|
IF arr_requisi2[idx].cod_n = ant_art.cod_n AND
|
|
arr_requisi2[idx].cod_grupo = ant_art.cod_grupo AND
|
|
arr_requisi2[idx].cod_tipo = ant_art.cod_tipo AND
|
|
arr_requisi2[idx].cod_sec = ant_art.cod_sec THEN
|
|
|
|
LET numero_msg = 21
|
|
CALL msg(numero_msg)
|
|
LET verdad = "S"
|
|
ELSE
|
|
IF verdad != "S" THEN
|
|
LET verdad = "N"
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END IF
|
|
END FOR
|
|
END FUNCTION
|
|
|
|
FUNCTION busca_det_req()
|
|
# Antes buscar el detalle de la requisicion limpia la pantalla
|
|
|
|
# Busca los registros detalle de la requisicion
|
|
DECLARE datos2 CURSOR FOR SELECT a.tipo_inv,a.cod_n,a.cod_grupo,a.cod_tipo,
|
|
a.cod_sec,
|
|
a.cantidad,a.ruta_file,a.documento
|
|
FROM cotb00008 a
|
|
WHERE a.num_req = requisi2.num_req and
|
|
a.status_t is null
|
|
|
|
|
|
LET idx = 1
|
|
LOCATE arr_requisi2[idx].foto IN MEMORY
|
|
FOREACH datos2 INTO arr_requisi2[idx].tipo_inv,arr_requisi2[idx].cod_n,
|
|
arr_requisi2[idx].cod_grupo,arr_requisi2[idx].cod_tipo,
|
|
arr_requisi2[idx].cod_sec, arr_requisi2[idx].cantidad,
|
|
arr_requisi2[idx].ruta_file,arr_requisi2[idx].foto
|
|
|
|
IF arr_requisi2[idx].tipo_inv="MATERIA PRIMA" THEN
|
|
SELECT a.descrip_esp,a.unidad_med INTO arr_requisi2[idx].descrip_esp,arr_requisi2[idx].unidad_med
|
|
FROM intb00001 a
|
|
WHERE a.cod_n = arr_requisi2[idx].cod_n AND
|
|
a.cod_grupo = arr_requisi2[idx].cod_grupo AND
|
|
a.cod_tipo = arr_requisi2[idx].cod_tipo AND
|
|
a.cod_sec = arr_requisi2[idx].cod_sec AND
|
|
a.status_t IS null
|
|
END IF
|
|
|
|
|
|
IF arr_requisi2[idx].tipo_inv="PRODUCTO TERMINADOS" THEN
|
|
SELECT a.descrip_esp,a.unidad_med INTO arr_requisi2[idx].descrip_esp,arr_requisi2[idx].unidad_med
|
|
FROM iptb00002 a
|
|
WHERE a.cod_n = arr_requisi2[idx].cod_n AND
|
|
a.cod_grupo = arr_requisi2[idx].cod_grupo AND
|
|
a.cod_tipo = arr_requisi2[idx].cod_tipo AND
|
|
a.cod_sec = arr_requisi2[idx].cod_sec AND
|
|
a.status_t IS null
|
|
END IF
|
|
|
|
IF arr_requisi2[idx].tipo_inv="REPUESTOS" THEN
|
|
SELECT a.descrip_esp,a.unidad_med INTO arr_requisi2[idx].descrip_esp,arr_requisi2[idx].unidad_med
|
|
FROM irtb00002 a
|
|
WHERE a.cod_n = arr_requisi2[idx].cod_n AND
|
|
a.cod_grupo = arr_requisi2[idx].cod_grupo AND
|
|
a.cod_tipo = arr_requisi2[idx].cod_tipo AND
|
|
a.cod_sec = arr_requisi2[idx].cod_sec AND
|
|
a.status_t IS null
|
|
END IF
|
|
|
|
IF arr_requisi2[idx].tipo_inv="MISCELANEOS" THEN
|
|
SELECT a.descrip_esp,a.unidad_med INTO arr_requisi2[idx].descrip_esp,arr_requisi2[idx].unidad_med
|
|
FROM istb00002 a
|
|
WHERE a.cod_n = arr_requisi2[idx].cod_n AND
|
|
a.cod_grupo = arr_requisi2[idx].cod_grupo AND
|
|
a.cod_tipo = arr_requisi2[idx].cod_tipo AND
|
|
a.cod_sec = arr_requisi2[idx].cod_sec AND
|
|
a.status_t IS null
|
|
END IF
|
|
|
|
LET idx = idx + 1
|
|
LOCATE arr_requisi2[idx].foto IN MEMORY
|
|
|
|
END FOREACH
|
|
END FUNCTION
|
|
FUNCTION busca_det_orden()
|
|
DECLARE busca_orden CURSOR FOR
|
|
SELECT DISTINCT 'PRODUCTO TERMINADOS',a.cod_n,a.cod_grupo,a.cod_tipo,
|
|
a.cod_sec,a.cantidad,b.descrip_esp,b.unidad_med
|
|
FROM prtb00013 a,iptb00002 b
|
|
WHERE a.cod_n = b.cod_n AND a.cod_grupo = b.cod_grupo AND a.cod_tipo = b.cod_tipo AND a.cod_sec = b.cod_sec AND
|
|
a.num_oc = requisi2.num_oc
|
|
|
|
LET idx = 1
|
|
LOCATE arr_requisi2[idx].foto IN MEMORY
|
|
FOREACH busca_orden INTO arr_requisi2[idx].tipo_inv,arr_requisi2[idx].cod_n,
|
|
arr_requisi2[idx].cod_grupo,arr_requisi2[idx].cod_tipo,
|
|
arr_requisi2[idx].cod_sec,arr_requisi2[idx].cantidad,
|
|
arr_requisi2[idx].descrip_esp,arr_requisi2[idx].unidad_med
|
|
|
|
LET idx = idx + 1
|
|
LOCATE arr_requisi2[idx].foto IN MEMORY
|
|
END FOREACH
|
|
END FUNCTION
|
|
#-------------------------------------------------------------------------
|
|
# Impresion de la Requisicion.
|
|
#-------------------------------------------------------------------------
|
|
|
|
|
|
REPORT print_req(x,descrip11,descrip22,descrip33,z, y, w, descrip44)
|
|
|
|
|
|
DEFINE x RECORD
|
|
num_req LIKE cotb00006.num_req,
|
|
fech_req LIKE cotb00006.fech_req,
|
|
departamento LIKE adtb00001.departamento,
|
|
cod_emp_sec LIKE cotb00006.cod_emp_sec,
|
|
estado LIKE cotb00006.estado,
|
|
uso LIKE cotb00006.uso,
|
|
prioridad LIKE cotb00006.prioridad,
|
|
num_oc INT,
|
|
observacion VARCHAR(100)
|
|
END RECORD
|
|
|
|
DEFINE descrip11, descrip22, descrip33, descrip44 CHAR(30)
|
|
DEFINE y, w STRING
|
|
|
|
|
|
|
|
DEFINE z RECORD
|
|
tipo_inv VARCHAR(20),
|
|
cod_n LIKE cotb00008.cod_n,
|
|
cod_grupo LIKE cotb00008.cod_grupo,
|
|
cod_tipo LIKE cotb00008.cod_tipo,
|
|
cod_sec LIKE cotb00008.cod_sec,
|
|
descrip_esp VARCHAR(180),
|
|
unidad_med LIKE intb00001.unidad_med,
|
|
cantidad LIKE cotb00008.cantidad,
|
|
ruta_file VARCHAR(100),
|
|
foto BYTE
|
|
END RECORD,
|
|
existencia,consumo DECIMAL(12,2),
|
|
fecha1 DATE,
|
|
doce CHAR(2)
|
|
|
|
|
|
OUTPUT
|
|
TOP MARGIN 10
|
|
PAGE LENGTH 100
|
|
|
|
|
|
|
|
#ORDER BY x.num_req,z.cod_sec
|
|
FORMAT
|
|
PAGE HEADER
|
|
|
|
# LET negrillas_on = ASCII 27, ASCII 71
|
|
# LET negrillas_off = ASCII 27, ASCII 72
|
|
# LET doble_on = ASCII 14
|
|
# LET doble_off = ASCII 20
|
|
# LET comp_on = ASCII 15
|
|
# LET comp_off = ASCII 18
|
|
# LET comprimido_12_on = ASCII 27, ASCII 77
|
|
# LET comprimido_12_off = ASCII 27, ASCII 80
|
|
# LET doce = ASCII 27, ASCII 12
|
|
PRINT doce
|
|
PRINT COLUMN 1,"MARMOTECH, S.A",
|
|
COLUMN 49,"REQUISICION DE COMPRA No. ",x.num_req using "&&&&&&"
|
|
PRINT
|
|
PRINT COLUMN 1,"Solicitante :",
|
|
COLUMN 15,"(",x.cod_emp_sec using '<<<<<<',") ",
|
|
descrip22 clipped,
|
|
COLUMN 53,"Fecha Requisicion : ",x.fech_req using "dd/mm/yyyy"
|
|
PRINT COLUMN 1,"Departamento :",
|
|
COLUMN 15,"(",x.departamento using '<<<<<<',") ",
|
|
descrip11 clipped
|
|
PRINT COLUMN 1,"Prioridad :",x.prioridad CLIPPED
|
|
PRINT COLUMN 1, "Uso :",x.uso CLIPPED
|
|
PRINT COLUMN 1, "ORDEN PEDIDO :",x.num_oc USING "&&&&&&"," ",cliente CLIPPED
|
|
PRINT COLUMN 1, "ORDEN DE TRABAJO :",y.trim()
|
|
PRINT COLUMN 1, "DEPTO. DESTINO :", "(", w.trim(),") ", descrip44
|
|
PRINT COLUMN 1, "OBSERVACIONES :", x.observacion[1,70]
|
|
PRINT COLUMN 1, "PROVEEDOR SUGERIDO:",proveedor_sugerido CLIPPED
|
|
|
|
PRINT COLUMN 1,"----------------------------------------",
|
|
"----------------------------------------",
|
|
"---------------------------"
|
|
PRINT COLUMN 1, "INVENTARIO",
|
|
COLUMN 21,"Codigo",
|
|
COLUMN 42,"Descripcion",
|
|
COLUMN 73, "Existencia",
|
|
COLUMN 86, "Consumo",
|
|
COLUMN 95,"Cantidad",
|
|
COLUMN 104,"Und"
|
|
PRINT COLUMN 1,"----------------------------------------",
|
|
"----------------------------------------",
|
|
"---------------------------"
|
|
LET fecha1 = x.fech_req - 90
|
|
ON EVERY ROW
|
|
IF z.cod_n is not null and
|
|
z.cod_grupo is not null and
|
|
z.cod_tipo is not null and
|
|
z.cod_sec is not null THEN
|
|
|
|
# BUSCA EXISTENCIA
|
|
CASE
|
|
WHEN z.cod_n = 1
|
|
SELECT SUM(a.cantidad_2) INTO existencia
|
|
FROM intb00006 a
|
|
WHERE a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec AND
|
|
a.status_t IS NULL
|
|
EXIT CASE
|
|
WHEN z.cod_n = 3 OR z.cod_n = 6 OR
|
|
z.cod_n = 9
|
|
SELECT SUM(a.cantidad_2) INTO existencia
|
|
FROM iptb00006 a
|
|
WHERE a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec AND
|
|
a.status_t IS NULL
|
|
EXIT CASE
|
|
WHEN z.cod_n = 5
|
|
SELECT SUM(a.cantidad_2) INTO existencia
|
|
FROM irtb00006 a
|
|
WHERE a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec AND
|
|
a.status_t IS NULL
|
|
EXIT CASE
|
|
END CASE
|
|
#-----------------------------------------------------------------------
|
|
# BUSCA EL CONSUMO DEL ARTICULO
|
|
CASE
|
|
WHEN z.cod_n = 1
|
|
SELECT SUM(a.cantidad_2) INTO consumo
|
|
FROM intb00006 a
|
|
WHERE a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec AND
|
|
a.fecha BETWEEN fecha1 AND x.fech_req AND
|
|
a.cod_mov = 36 AND
|
|
a.status_t IS NULL
|
|
EXIT CASE
|
|
WHEN z.cod_n = 3 OR z.cod_n = 6 OR
|
|
z.cod_n = 9
|
|
SELECT SUM(a.cantidad_2) INTO consumo
|
|
FROM iptb00006 a
|
|
WHERE a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec AND
|
|
a.fecha BETWEEN fecha1 AND x.fech_req AND
|
|
a.cod_mov in (30,31) AND
|
|
a.status_t IS NULL
|
|
EXIT CASE
|
|
WHEN z.cod_n = 5
|
|
SELECT SUM(a.cantidad_2) INTO consumo
|
|
FROM irtb00006 a,irtb00030 b
|
|
WHERE a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec AND
|
|
a.fecha BETWEEN fecha1 AND x.fech_req AND
|
|
a.cod_mov = b.cod_grupo AND
|
|
a.status_t IS NULL
|
|
EXIT CASE
|
|
END CASE
|
|
#---------------------------------------------------------------------
|
|
PRINT COLUMN 1, z.tipo_inv,
|
|
COLUMN 20, z.cod_n using "&&&&","-",
|
|
z.cod_grupo using "&&&&","-",
|
|
z.cod_tipo using "&&&&","-",
|
|
z.cod_sec using "&&&&&&",
|
|
COLUMN 44, z.descrip_esp WORDWRAP RIGHT MARGIN 77,
|
|
|
|
COLUMN 74, existencia USING "<<<<,<<<.##",
|
|
COLUMN 86, consumo USING "<<<<<,<<<.##",
|
|
COLUMN 99, z.cantidad using "<<,<<<,<<<.##",
|
|
" ",z.unidad_med
|
|
|
|
INITIALIZE adicional.* TO NULL
|
|
|
|
SELECT a.detalle1,a.detalle2,a.detalle3
|
|
INTO adicional.detalle1, adicional.detalle2, adicional.detalle3
|
|
FROM cotb00042 a
|
|
WHERE a.status_t is null AND
|
|
a.num_req = x.num_req AND
|
|
a.cod_n = z.cod_n AND
|
|
a.cod_grupo = z.cod_grupo AND
|
|
a.cod_tipo = z.cod_tipo AND
|
|
a.cod_sec = z.cod_sec
|
|
|
|
IF adicional.detalle1 IS NOT NULL THEN
|
|
PRINT COLUMN 13, adicional.detalle1
|
|
END IF
|
|
|
|
IF adicional.detalle2 IS NOT NULL THEN
|
|
PRINT COLUMN 13, adicional.detalle2
|
|
END IF
|
|
|
|
IF adicional.detalle3 IS NOT NULL THEN
|
|
PRINT COLUMN 13, adicional.detalle3
|
|
END IF
|
|
END IF
|
|
|
|
PAGE TRAILER
|
|
PRINT COLUMN 1,"----------------------------------------",
|
|
"----------------------------------------"
|
|
PRINT COLUMN 1,"AUTORIZACION"
|
|
|
|
SKIP 5 LINES
|
|
PRINT COLUMN 3,"--------------------",
|
|
COLUMN 31,"--------------------",
|
|
COLUMN 58,"--------------------"
|
|
|
|
PRINT COLUMN 3,"Gerente Departamento",
|
|
COLUMN 31," Gerente General ",
|
|
COLUMN 58," Gerente Materiales "
|
|
|
|
|
|
END REPORT
|
|
FUNCTION busca_orden()
|
|
# SELECT a.tipo_cliente,a.sec_cliente,b.nombre INTO ktipo_cliente,ksec_cliente,knombre
|
|
# FROM prtb00012 a,vetb00004 b
|
|
# WHERE a.num_oc = requisi2.num_oc AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND
|
|
# a.status_t IS NULL
|
|
LET cliente = ktipo_cliente USING "&&","-",ksec_cliente USING "&&&&&&&&"," ",knombre CLIPPED
|
|
DISPLAY BY NAME cliente
|
|
|
|
END FUNCTION
|
|
FUNCTION busca_proveedor()
|
|
SELECT MAX(a.num_oc) INTO ult_orden FROM cotb00014 a,cotb00015 b
|
|
WHERE (a.num_oc = b.num_oc) AND
|
|
b.cod_n = arr_requisi2[curr].cod_n AND
|
|
b.cod_grupo = arr_requisi2[curr].cod_grupo AND
|
|
b.cod_tipo = arr_requisi2[curr].cod_tipo AND
|
|
b.cod_sec = arr_requisi2[curr].cod_sec AND
|
|
a.status_t IS NULL
|
|
IF ult_orden IS NOT NULL THEN
|
|
SELECT CAST(a.cod_sp AS VARCHAR(4)) +'-'+CAST(a.cod_sp_sec AS VARCHAR(8))+' '+
|
|
a.nom_sp INTO proveedor_sugerido
|
|
FROM cotb00001 a,cotb00014 b
|
|
WHERE (a.cod_sp = b.cod_sp AND
|
|
a.cod_sp_sec = b.cod_sp_sec) AND
|
|
(b.num_oc = ult_orden) AND
|
|
b.status_t IS NULL
|
|
|
|
DISPLAY BY NAME proveedor_sugerido
|
|
END IF
|
|
|
|
END FUNCTION
|
|
|
|
|
|
|
|
FUNCTION buscarToemail()
|
|
DEFINE xemail VARCHAR(255)
|
|
SELECT a.email,a.nombreusuario,a.notificacion
|
|
INTO toemail,xnombreusuario,notifica FROM seg0001 a WHERE a.usuario = usuarios
|
|
|
|
DECLARE buscaremail CURSOR FOR
|
|
SELECT a.correo FROM seg0003 a WHERE a.requisicionescompras='SI'
|
|
|
|
FOREACH buscaremail INTO xemail
|
|
LET toemail = toemail CLIPPED,",",xemail CLIPPED
|
|
END FOREACH
|
|
DISPLAY "EMAIL ",toemail," NOTIFICA ",notifica , " u ",usuarios
|
|
END FUNCTION
|
|
|
|
|
|
|
|
FUNCTION checkProducts()
|
|
|
|
DEFINE cont, i INT
|
|
|
|
LET cont = 0
|
|
|
|
FOR i = 1 TO arr_requisi2.getLength()
|
|
|
|
IF arr_requisi2[i].cod_n = container.cod_n AND
|
|
arr_requisi2[i].cod_grupo = container.cod_grupo AND
|
|
arr_requisi2[i].cod_tipo = container.cod_tipo AND
|
|
arr_requisi2[i].cod_sec = container.cod_sec AND
|
|
arr_requisi2[i].tipo_inv = container.tipo_inv THEN
|
|
|
|
LET cont = cont + 1
|
|
END IF
|
|
|
|
END FOR
|
|
|
|
IF cont >= 2 THEN
|
|
RETURN FALSE
|
|
ELSE
|
|
RETURN TRUE
|
|
END IF
|
|
|
|
END FUNCTION
|