Files
MBS/PROYECTOS/irdir/irprmt020.4gl
T

934 lines
36 KiB
Plaintext

{
PROGRAMA: irprmt020
OBEJETIVO: Requisicion de Respuestos
DESARROLLADO POR: ING. ELVIS GARCÍA
FECHA DESARROLLO: NOVIEMBRE 01, 2024
}
IMPORT os
GLOBALS "irprgb000.4gl"
DEFINE fakeData RECORD LIKE cotb00001.*
DEFINE answer STRING
DEFINE Toemail,
subject,
cuerpo_correo,
xusername,
xsmtphost,
xsmtpport,
xpassword,
emailadd,
retorne
STRING
DEFINE
d_tipos,
mensaje,
f_tipos,
filepath,
extension,
xdestino,
l_file,
tmpdir_file,
dir_file,
url_destino,
attachment
STRING,
tmpnumero, dcodn, dcodgrupo, dcodtipo, dcodsec INT
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
LET url_destino = fgl_getenv("URLIMAGENES")
CALL usuarioSistema(usuarios) RETURNING nombreUsuario, email
CALL ipprmt020()
END MAIN
FUNCTION ipprmt020()
OPEN WINDOW w1 WITH FORM "irfmmt020"
DIALOG ATTRIBUTE(UNBUFFERED)
DISPLAY ARRAY arr_busqueda TO busqueda.*
BEFORE DISPLAY
LET toemail = email
LET xtiene = 'NO'
SELECT from_address, puerto, nombre_servidor, clave
INTO xusername, xsmtpport, xsmtphost, xpassword
FROM tbperfil_mail
WHERE cod_perfil = 2
# LET xusername ='notificacion@marmotech.com.do'
# LET xsmtphost ='smtp.office365.com'
# LET xsmtpport = '587'
# LET xpassword = 'Lmmjvsd2020'
CALL buscarData()
ON ACTION nuevo ATTRIBUTE(TEXT = "Nuevo", IMAGE = "new")
INITIALIZE p_irtb57.* TO NULL
CALL arr_irtb58.clear()
CLEAR FORM
LET tmpnumero = 0
SELECT a.num_doc
INTO tmpnumero
FROM irtb00043 a
WHERE usuario = usuarios
IF STATUS = NOTFOUND THEN
INSERT INTO irtb00043 VALUES(1, usuarios)
LET tmpnumero = 1
ELSE
LET tmpnumero = tmpnumero + 1
UPDATE irtb00043
SET num_doc = tmpnumero
WHERE usuario = usuarios
END IF
LET p_irtb57.numero_doc = tmpnumero
DISPLAY BY NAME p_irtb57.numero_doc
LET p_irtb57.bodega = 3
LET opcion = "Adicionar"
LET subject = 'CREACION REQUISICION PARA ALMACEN NO.'
CALL entradas()
{ ON ACTION editar ATTRIBUTE(TEXT="Editar",IMAGE="edit")
LET opcion="Actualializar"
LET p_irtb57.numero_doc = arr_busqueda[arr_curr()].numeroid
LET p_irtb57.estado = arr_busqueda[arr_curr()].estadp1
DISPLAY BY NAME p_irtb57.numero_doc,p_irtb57.estado
SELECT DISTINCT a.numero_doc FROM irtb00006 a
WHERE a.numero_doc = p_irtb57.numero_doc AND
a.cod_mov = p_irtb57.cod_mov
IF STATUS != NOTFOUND THEN
CALL msg(1014)
CONTINUE DIALOG
END IF
LET subject = 'MODIFICACION REQUISICION PARA ALMACEN NO.'
CALL buscadoc(arr_busqueda[arr_curr()].numeroid,arr_busqueda[arr_curr()].cod_mov ) RETURNING p_irtb57.*,arr_irtb58
CALL entradas()}
ON ACTION anular ATTRIBUTE(TEXT = "Anular", IMAGE = "garbage")
LET p_irtb57.numero_doc = arr_busqueda[arr_curr()].numeroid
LET p_irtb57.cod_mov = arr_busqueda[arr_curr()].cod_mov
CALL anular()
ON ACTION imprimir ATTRIBUTE(TEXT = "Imprimir", IMAGE = "printer")
CALL buscadoc(
arr_busqueda[arr_curr()].numeroid,
arr_busqueda[arr_curr()]
.cod_mov) #RETURNING p_irtb57.*,arr_irtb58
CALL impdocumentos(
arr_busqueda[arr_curr()].numeroid,
arr_busqueda[arr_curr()].cod_mov)
ON ACTION CANCEL ATTRIBUTE(TEXT = "Cancelar", IMAGE = "quit")
RETURN
END DISPLAY
END DIALOG
CLOSE WINDOW w1
END FUNCTION
FUNCTION buscardata()
DEFINE i INT
DECLARE buscardata CURSOR FOR
SELECT b.estado,
f.descripcion,
CAST(a.cod_mov AS VARCHAR(10)) || ' ' || a.descrip_mov,
b.numero_doc,
b.fecha,
c.nom_sp AS nom_cliente,
b.observacion,
d.descripcion,
' ',
b.cod_mov,
b.bodega,
b.bodega_destino
FROM irtb00005 a,
irtb00057 b INNER JOIN irtb00061 f ON b.idestado = f.idestado
LEFT OUTER
JOIN cotb00001 c
ON c.cod_sp = b.tipo_cliente
AND c.cod_sp_sec = b.sec_cliente,
intb00009 d
WHERE a.cod_mov = b.cod_mov
AND b.bodega = d.cod_bodega
AND b.us_crea = usuarios
AND b.status_t IS NULL
LET i = 1
FOREACH buscardata INTO arr_busqueda[i].*
LET p_irtb57.cod_mov = arr_busqueda[i].cod_mov
LET p_irtb57.num_oc = arr_busqueda[i].numeroid
IF arr_busqueda[i].bodega2 IS NOT NULL THEN
SELECT a.descripcion
INTO arr_busqueda[i].bodega_destino
FROM intb00009 a
WHERE a.cod_bodega = arr_busqueda[i].bodega2
END IF
LET i = i + 1
END FOREACH
END FUNCTION
FUNCTION codigomov()
DEFINE
ketiquetas SMALLINT,
detiquetas STRING
LET cbmovimiento = ui.combobox.forname("formonly.cod_mov")
DECLARE bmovimiento_t CURSOR FOR
SELECT a.cod_mov,
RTRIM(a.descrip_mov) || '(' || CAST(a.cod_mov AS VARCHAR(6)) || ')'
FROM irtb00005 a
WHERE a.requisiciones = "SI" AND a.status_t IS NULL
ORDER BY a.descrip_mov
CALL cbmovimiento.clear()
FOREACH bmovimiento_t INTO ketiquetas, detiquetas
CALL cbmovimiento.additem(ketiquetas, detiquetas)
END FOREACH
END FUNCTION
FUNCTION entradas()
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME p_irtb57.cod_mov,
p_irtb57.num_oc,
p_irtb57.orden_trabajo,
p_irtb57.observacion,
p_irtb57.bodega,
p_irtb57.bodega_destino,
p_irtb57.url_file
ATTRIBUTE(WITHOUT DEFAULTS)
ON ACTION abrirdocumento
IF p_irtb57.url_file IS NOT NULL THEN
CALL ui.Interface.frontCall(
"standard", "launchURL", [p_irtb57.url_file], [])
END IF
ON ACTION atardocumento
CALL ui.Interface.frontCall(
"standard",
"openfile",
[dir_file, d_tipos, f_tipos, mensaje],
[filepath])
IF filepath IS NOT NULL THEN
IF downshift(os.Path.extension(filepath)) = "pdf"
OR downshift(os.Path.extension(filepath)) = "jpg"
OR downshift(os.Path.extension(filepath)) = "xls"
OR downshift(os.Path.extension(filepath)) = "xlsx"
OR downshift(os.Path.extension(filepath)) = "doc"
OR downshift(os.Path.extension(filepath)) = "docx"
OR downshift(os.Path.extension(filepath)) = "png" THEN
LET dir_file = os.Path.basename(filepath)
LET tmpdir_file = dir_file
LET dir_file =
fgl_getenv("IMAGENES"), "\\", dir_file CLIPPED
DISPLAY "imagenes ", dir_file
CALL fgl_getfile(filepath, dir_file)
LET p_irtb57.url_file =
url_destino CLIPPED, "/", tmpdir_file CLIPPED
ELSE
CALL fgl_winmessage(
"ERROR", "EL FILE DEBE SER PDF, JPG, PNG", "INFO")
END IF
END IF
BEFORE INPUT
LET d_tipos = "PDF"
LET f_tipos = "*.pdf *.jpg *.png, *.xls, *.xlsx, *.doc, *.docx"
LET mensaje = %"Elige Documento"
LET selec =
"INSERT INTO irtb00060(id_etiqueta,id_despiece,cod_n,cod_grupo,cod_tipo,cod_sec,lado_1,lado_2,lado_3,
cantidad,medida,secuencia,bodega)
SELECT id_etiqueta,?,cod_n,cod_grupo,cod_tipo,cod_sec,lado_1,lado_2,lado_3,
cantidad,medida,secuencia,bodega
FROM tmpdespiece WHERE id_despiece = ?"
PREPARE insertad FROM selec
DISPLAY BY NAME nombreUsuario, email
CALL codigomov()
CALL bodegas('2')
IF opcion = "Adicionar" THEN
LET p_irtb57.fecha = TODAY
ELSE
IF p_irtb57.estado = 'AUTORIZADA' THEN
CALL msg(1004)
EXIT DIALOG
END IF
END IF
DISPLAY BY NAME p_irtb57.fecha
IF p_irtb57.num_oc IS NOT NULL THEN
LET ordenPedidos = TRUE
ELSE
LET ordenPedidos = FALSE
END IF
AFTER FIELD num_oc
IF p_irtb57.num_oc IS NOT NULL AND ordenPedidos = FALSE THEN
SELECT a.cod_sp, a.cod_sp_sec, b.nom_sp
INTO p_irtb57.tipo_cliente,
p_irtb57.sec_cliente,
p_irtb57.cliente
FROM cotb00014 a, cotb00001 b
WHERE a.cod_sp = b.cod_sp
AND a.cod_sp_sec = b.cod_sp_sec
AND a.cierre = 'N'
AND a.num_oc = p_irtb57.num_oc
AND a.tipo = '03'
AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD num_oc
END IF
DISPLAY BY NAME p_irtb57.tipo_cliente,
p_irtb57.sec_cliente,
p_irtb57.cliente
END IF
AFTER FIELD orden_trabajo
IF p_irtb57.orden_trabajo IS NOT NULL THEN
INITIALIZE fakedata.* TO NULL
CALL ApiMaintainC('CHECK', p_irtb57.orden_trabajo, fakeData.*, usuarios) RETURNING answer
IF answer IS NULL OR answer = 0 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
END IF
END IF
AFTER FIELD cod_mov
IF p_irtb57.cod_mov IS NOT NULL THEN
LET nombreMov =
ui.ComboBox.forName('formonly.cod_mov')
.getTextOf(p_irtb57.cod_mov)
SELECT a.requiere_autorizacion {,a.control_transferencia}
INTO requiere {,transacc.control_transferencia }
FROM irtb00005 a
WHERE a.cod_mov = p_irtb57.cod_mov
IF requiere = "NO" THEN
LET xestado = 'AUTORIZADA'
ELSE
LET xestado = 'NO AUTORIZADA'
END IF
END IF
AFTER FIELD bodega
IF p_irtb57.bodega IS NOT NULL THEN
LET nombreBodega =
ui.ComboBox.forName('formonly.bodega')
.getTextOf(p_irtb57.bodega)
CALL emailbodegas() RETURNING emailadd
END IF
AFTER FIELD bodega_destino
IF p_irtb57.bodega_destino IS NOT NULL THEN
LET nombreBodegaDestino =
ui.ComboBox.forName('formonly.bodega_destino')
.getTextOf(p_irtb57.bodega_destino)
END IF
AFTER INPUT
IF p_irtb57.bodega IS NULL THEN
CALL msg(16)
NEXT FIELD bodega
END IF
IF p_irtb57.bodega IS NOT NULL THEN
LET nombreBodega =
ui.ComboBox.forName('formonly.bodega')
.getTextOf(p_irtb57.bodega)
CALL emailbodegas() RETURNING emailadd
END IF
{ IF transacc.control_transferencia = "SI" THEN
IF p_irtb57.bodega_destino IS NULL THEN
CALL msg(16)
NEXT FIELD bodega_destino
END IF
END IF }
IF p_irtb57.num_oc IS NOT NULL THEN
SELECT a.cod_sp, a.cod_sp_sec, b.nom_sp
INTO p_irtb57.tipo_cliente,
p_irtb57.sec_cliente,
p_irtb57.cliente
FROM cotb00014 a, cotb00001 b
WHERE a.cod_sp = b.cod_sp
AND a.cod_sp_sec = b.cod_sp_sec
AND a.cierre = 'N'
AND a.num_oc = p_irtb57.num_oc
AND a.status_t IS NULL
IF STATUS = NOTFOUND THEN
CALL msg(3)
NEXT FIELD num_oc
END IF
DISPLAY BY NAME p_irtb57.tipo_cliente,
p_irtb57.sec_cliente,
p_irtb57.cliente
IF p_irtb57.cod_mov IS NOT NULL THEN
LET nombreMov =
ui.ComboBox.forName('formonly.cod_mov')
.getTextOf(p_irtb57.cod_mov)
END IF
IF p_irtb57.num_oc IS NOT NULL AND ordenPedidos = FALSE THEN
LET idx = 1
DECLARE buscaOrden CURSOR FOR
SELECT a.tipo,
a.cod_n,
a.cod_grupo,
a.cod_tipo,
a.cod_sec,
b.descrip_esp,
b.unidad_med,
a.cantidad,
a.cantidad,
a.cantidad,
a.cantidad
FROM cotb00015 a, irtb00002 b
WHERE a.num_oc = p_irtb57.num_oc
AND a.tipo = 3
AND (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.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)
FOREACH buscaOrden INTO arr_irtb58[idx].*
LET idx = idx + 1
END FOREACH
END IF
END IF
END INPUT
INPUT ARRAY arr_irtb58 FROM sdetalle.* ATTRIBUTE(WITHOUT DEFAULTS)
ON ACTION buscar
LET idx = arr_curr()
LET scr_l = scr_line()
CALL busca_prod(
'03')
RETURNING arr_irtb58[idx].cod_n,
arr_irtb58[idx].cod_grupo,
arr_irtb58[idx].cod_tipo,
arr_irtb58[idx].cod_sec,
arr_irtb58[idx].descripcion
CALL producto()
IF tienedespiece THEN
LET dcodn = arr_irtb58[idx].cod_n
LET dcodgrupo = arr_irtb58[idx].cod_grupo
LET dcodtipo = arr_irtb58[idx].cod_tipo
LET dcodsec = arr_irtb58[idx].cod_sec
CALL despiece()
END IF
NEXT FIELD cantidad_1
{ON ACTION despiece ATTRIBUTE(TEXT="Despiece",IMAGE="")
LET idx = arr_curr()
CALL producto()
IF tienedespiece THEN
LET dcodn = arr_irtb58[idx].cod_n
LET dcodgrupo = arr_irtb58[idx].cod_grupo
LET dcodtipo = arr_irtb58[idx].cod_tipo
LET dcodsec = arr_irtb58[idx].cod_sec
CALL despiece()
END IF
NEXT FIELD cantidad_1 }
BEFORE ROW
LET idx = arr_curr()
LET arr_irtb58[idx].area = 1
DISPLAY arr_irtb58[idx].area TO sdetalle[scr_line()].area
AFTER FIELD cod_Sec
LET idx = arr_curr()
IF arr_irtb58[idx].cod_sec IS NOT NULL THEN
CALL producto()
IF NOT existe THEN
CALL msg(3)
NEXT FIELD cod_sec
END IF
IF tienedespiece THEN
LET dcodn = arr_irtb58[idx].cod_n
LET dcodgrupo = arr_irtb58[idx].cod_grupo
LET dcodtipo = arr_irtb58[idx].cod_tipo
LET dcodsec = arr_irtb58[idx].cod_sec
CALL despiece()
END IF
IF p_irtb57.num_oc IS NOT NULL THEN
{SELECT DISTINCT a.cod_sp FROM cotb00015 a WHERE a.num_oc = p_irtb57.num_oc AND
a.cod_n = arr_irtb58[idx].cod_n AND
a.cod_grupo = arr_irtb58[idx].cod_grupo AND
a.cod_tipo = arr_irtb58[idx].cod_tipo AND
a.cod_sec = arr_irtb58[idx].cod_sec }
SELECT DISTINCT a.cod_sp
FROM cotb00014 a
INNER
JOIN cotb00015 b
ON a.num_oc = b.num_oc
WHERE a.num_oc = p_irtb57.num_oc
AND b.cod_n = arr_irtb58[idx].cod_n
AND b.cod_grupo = arr_irtb58[idx].cod_grupo
AND b.cod_tipo = arr_irtb58[idx].cod_tipo
AND b.cod_sec = arr_irtb58[idx].cod_sec
IF STATUS = NOTFOUND THEN
CALL msg(397)
NEXT FIELD cod_Sec
END IF
END IF
END IF
AFTER FIELD cantidad_1
IF arr_irtb58[idx].cantidad_1 IS NOT NULL THEN
IF arr_irtb58[idx].cantidad_1
> arr_irtb58[idx].cantidad_o1 THEN
CALL msg(46)
NEXT FIELD cantidad_1
END IF
LET arr_irtb58[idx].cantidad =
arr_irtb58[idx].cantidad_1
* 1 {arr_irtb58[idx].factor_conv}
DISPLAY arr_irtb58[idx].cantidad TO sdetalle[scr_l].cantidad
END IF
ON ACTION guardar ATTRIBUTE(TEXT = "Adicionar", IMAGE = "save")
IF p_irtb57.bodega IS NOT NULL THEN
LET nombreBodega =
ui.ComboBox.forName('formonly.bodega')
.getTextOf(p_irtb57.bodega)
END IF
{ IF transacc.control_transferencia = "SI" THEN
IF p_irtb57.bodega_destino IS NULL THEN
CALL msg(16)
NEXT FIELD bodega_destino
END IF
END IF}
IF p_irtb57.bodega_destino IS NOT NULL THEN
LET nombreBodegaDestino =
ui.ComboBox.forName('formonly.bodega_destino')
.getTextOf(p_irtb57.bodega_destino)
END IF
IF emailadd IS NOT NULL THEN
LET Toemail = toemail CLIPPED, ",", emailadd CLIPPED
ELSE
LET Toemail = toemail CLIPPED
END IF
# IF opcion = "Adicionar" THEN
LET p_irtb57.fecha = TODAY
IF p_irtb57.bodega IS NULL THEN
CALL msg(16)
NEXT FIELD bodega
END IF
BEGIN WORK
SELECT a.numero_doc INTO secuencia FROM irtb00059 a
IF STATUS = NOTFOUND THEN
INSERT INTO irtb00059(
numero_doc, us_mod, fech_mod)
VALUES(0, usuarios, getdate())
END IF
LET secuencia = secuencia + 1
LET p_irtb57.numero_doc = secuencia
UPDATE irtb00059
SET numero_doc = p_irtb57.numero_doc,
us_mod = usuarios,
fech_mod = getdate()
LET subject =
subject CLIPPED, p_irtb57.numero_doc USING "&&&&&&&&"
INSERT INTO irtb00057(
numero_doc,
fecha,
cod_mov,
num_oc,
orden_trabajo,
tipo_cliente,
sec_cliente,
nombre,
bodega,
bodega_destino,
estado,
us_crea,
fech_crea,
observacion,
url_destino,
idestado)
VALUES(p_irtb57.numero_doc,
p_irtb57.fecha,
p_irtb57.cod_mov,
p_irtb57.num_oc,
p_irtb57.orden_trabajo,
p_irtb57.tipo_cliente,
p_irtb57.sec_cliente,
p_irtb57.cliente,
p_irtb57.bodega,
p_irtb57.bodega_destino,
xestado,
usuarios,
getdate(),
p_irtb57.observacion,
p_irtb57.url_file,
5)
IF STATUS < 0 THEN
ROLLBACK WORK
DISPLAY 'ROLLBACK 1'
RETURN
END IF
LET tieneDetalle = "NO"
FOR idx = 1 TO arr_irtb58.getLength()
IF arr_irtb58[idx].cantidad IS NOT NULL THEN
LET tieneDetalle = "SI"
IF arr_irtb58[idx].cantidad_1
> arr_irtb58[idx].cantidad_o1 THEN
CALL msg(46)
ROLLBACK WORK
END IF
{IF arr_irtb58[idx].area IS NULL THEN
ROLLBACK WORK
CALL msg(16)
NEXT FIELD area
END IF}
INSERT INTO irtb00058(
numero_doc,
cod_mov,
area,
cod_n,
cod_grupo,
cod_tipo,
cod_Sec,
descripcion,
unidad_med,
cantidad_1,
cantidad_2,
us_crea,
fech_crea)
VALUES(p_irtb57.numero_doc,
p_irtb57.cod_mov,
arr_irtb58[idx].area,
arr_irtb58[idx].cod_n,
arr_irtb58[idx].cod_grupo,
arr_irtb58[idx].cod_tipo,
arr_irtb58[idx].cod_sec,
arr_irtb58[idx].descripcion,
arr_irtb58[idx].unidad_med,
arr_irtb58[idx].cantidad_1,
arr_irtb58[idx].cantidad,
usuarios,
getdate())
IF STATUS < 0 THEN
ROLLBACK WORK
DISPLAY 'ROLLBACK 2'
RETURN
END IF
END IF
END FOR
#DESPIECE
DELETE FROM irtb00060
WHERE id_despiece = p_irtb57.numero_doc
EXECUTE insertad USING p_irtb57.numero_doc, tmpnumero
DELETE FROM tmpdespiece WHERE id_despiece = tmpnumero
IF tieneDetalle = "SI" THEN
COMMIT WORK
CALL msg(1)
CALL buscarData()
CALL impdocumentos(
p_irtb57.numero_doc, p_irtb57.cod_mov)
# CALL contenido() RETURNING cuerpo_correo
LET attachment = NULL
# CALL enviaemail(toEmail,subject,cuerpo_correo,attachment,xusername,xsmtphost,xsmtpport,xpassword)
#RETURNING mensajes
ELSE
ROLLBACK WORK
CALL msg(1663)
END IF
{ELSE
LET subject =
subject CLIPPED, p_irtb57.numero_doc USING "&&&&&&&&"
BEGIN WORK
UPDATE irtb00057
SET num_oc = p_irtb57.num_oc,
tipo_cliente = p_irtb57.tipo_cliente,
sec_cliente = p_irtb57.sec_cliente,
nombre = p_irtb57.cliente,
observacion = p_irtb57.observacion,
bodega = p_irtb57.bodega,
bodega_destino = p_irtb57.bodega_destino,
us_mod = usuarios,
fech_mod = getdate(),
url_destino = p_irtb57.url_file,
idestado = p_irtb57.idstado
WHERE numero_doc = p_irtb57.numero_doc
AND cod_mov = p_irtb57.cod_mov
DELETE FROM irtb00058
WHERE numero_doc = p_irtb57.numero_doc
AND cod_mov = p_irtb57.cod_mov
LET tieneDetalle = "NO"
FOR idx = 1 TO arr_irtb58.getLength()
IF arr_irtb58[idx].cantidad IS NOT NULL THEN
LET tieneDetalle = "SI"
IF arr_irtb58[idx].cantidad_1
> arr_irtb58[idx].cantidad_o1 THEN
CALL msg(46)
NEXT FIELD cantidad_1
END IF
# IF arr_irtb58[idx].area IS NULL THEN
# ROLLBACK WORK
# CALL msg(16)
# NEXT FIELD area
# END IF
INSERT INTO irtb00058(
numero_doc,
cod_mov,
area,
cod_n,
cod_grupo,
cod_tipo,
cod_Sec,
descripcion,
unidad_med,
cantidad_1,
cantidad_2,
us_crea,
fech_crea)
VALUES(p_irtb57.numero_doc,
p_irtb57.cod_mov,
arr_irtb58[idx].area,
arr_irtb58[idx].cod_n,
arr_irtb58[idx].cod_grupo,
arr_irtb58[idx].cod_tipo,
arr_irtb58[idx].cod_sec,
arr_irtb58[idx].descripcion,
arr_irtb58[idx].unidad_med,
arr_irtb58[idx].cantidad_1,
arr_irtb58[idx].cantidad,
usuarios,
getdate())
IF STATUS < 0 THEN
ROLLBACK WORK
RETURN
END IF
END IF
END FOR
#DESPIECE
DELETE FROM irtb00060
WHERE id_despiece = p_irtb57.numero_doc
EXECUTE insertad USING p_irtb57.numero_doc, tmpnumero
DELETE FROM tmpdespiece
WHERE id_despiece = p_irtb57.numero_doc
IF tieneDetalle = "SI" THEN
COMMIT WORK
CALL msg(13)
CALL buscarData()
CALL impdocumentos(
p_irtb57.numero_doc, p_irtb57.cod_mov)
CALL contenido() RETURNING cuerpo_correo
# CALL enviaemail(Toemail,subject,cuerpo_correo,NULL,xusername,xsmtphost,xsmtpport,xpassword)
# RETURNING retorne
ELSE
ROLLBACK WORK
CALL msg(1663)
END IF
END IF }
END INPUT
ON ACTION CANCEL ATTRIBUTE(TEXT = "Salir", IMAGE = 'quit')
DELETE FROM tmpdespiece WHERE id_despiece = tmpnumero
EXIT DIALOG
END DIALOG
END FUNCTION
FUNCTION anular()
DEFINE respuesta STRING
SELECT DISTINCT a.num_doc
FROM irtb00006 a
WHERE a.num_req = p_irtb57.numero_doc AND a.cod_mov = p_irtb57.cod_mov
IF STATUS != NOTFOUND THEN
CALL msg(1014)
RETURN
END IF
DISPLAY "ANULAR: ", p_irtb57.numero_doc
LET respuesta =
fgl_winquestion(
"Borrar",
"Esta seguro de elminiar esta requisicion?",
"NO",
"YES|NO",
"QUESTION",
0)
IF respuesta = "YES" THEN
UPDATE irtb00057
SET status_t = 'E', us_mod = usuarios, fech_mod = getdate()
WHERE numero_doc = p_irtb57.numero_doc
AND cod_mov = p_irtb57.cod_mov
IF STATUS < 0 THEN
DISPLAY "nothing happened..."
ELSE
CALL msg(39)
CALL arr_busqueda.clear()
CALL buscarData()
END IF
END IF
END FUNCTION
FUNCTION producto()
DEFINE pcodn INT
SELECT a.descrip_esp, a.unidad_med, null
INTO arr_irtb58[idx].descripcion, arr_irtb58[idx].unidad_med, pcodn
FROM irtb00002 a
LEFT OUTER
JOIN irtb00028 b
ON 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
WHERE a.cod_n = arr_irtb58[idx].cod_n
AND a.cod_grupo = arr_irtb58[idx].cod_grupo
AND a.cod_tipo = arr_irtb58[idx].cod_tipo
AND a.cod_sec = arr_irtb58[idx].cod_sec
IF STATUS = NOTFOUND THEN
LET existe = FALSE
ELSE
IF pcodn IS NOT NULL THEN
LET tienedespiece = TRUE
ELSE
LET tienedespiece = FALSE
END IF
LET existe = TRUE
END IF
END FUNCTION
FUNCTION contenido()
DEFINE xcuerpo1, xcuerpo2 STRING
LET xcuerpo1 =
"<!DOCTYPE html><body>
<head>
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
</style>
</head>"
LET xcuerpo1 =
xcuerpo1 CLIPPED, "<h1>Solicitado por: ", nombreUsuario CLIPPED, "</h1>"
LET xcuerpo1 = xcuerpo1 CLIPPED, "<h2>", nombreMov CLIPPED, "</h2>"
IF p_irtb57.num_oc IS NOT NULL THEN
LET xcuerpo1 =
xcuerpo1 CLIPPED,
"<h2>Orden:",
p_irtb57.num_oc USING "&&&&&&&&",
"</h2>",
"<h2>Cliente:",
p_irtb57.cliente CLIPPED,
"</h2>"
END IF
LET xcuerpo1 =
xcuerpo1 CLIPPED, "<h2>Bodega Origen:", nombreBodega CLIPPED, "</h2>"
LET xcuerpo1 =
xcuerpo1 CLIPPED,
"<table><tr><th>Productos</th><th>Unidades</th> <th>cantidad</th><th>"
FOR idx = 1 TO arr_irtb58.getLength()
IF arr_irtb58[idx].cod_sec IS NOT NULL THEN
LET xcuerpo2 =
xcuerpo2 CLIPPED,
"<tr><td>",
arr_irtb58[idx].descripcion CLIPPED,
"</td>",
"<td>",
arr_irtb58[idx].cantidad_1 USING "##,###.##",
"</td>",
"<td>",
arr_irtb58[idx].cantidad USING "##,###.##",
"</td>",
"</tr>"
END IF
END FOR
LET xcuerpo1 = xcuerpo1 CLIPPED, xcuerpo2 CLIPPED, "</table></body>"
RETURN xcuerpo1
END FUNCTION
FUNCTION emailbodegas()
DEFINE
xemailadd, remailadd STRING,
jj INT
DECLARE bemails CURSOR FOR
SELECT b.email FROM seg0001 b WHERE b.bodega = p_irtb57.bodega
LET remailadd = NULL
LET jj = 1
FOREACH bemails INTO xemailadd
IF xemailadd IS NOT NULL THEN
LET remailadd = xemailadd CLIPPED, ",", remailadd
END IF
LET jj = jj + 1
END FOREACH
RETURN remailadd
END FUNCTION
FUNCTION despiece()
END FUNCTION