920 lines
36 KiB
Plaintext
920 lines
36 KiB
Plaintext
{
|
|
PROGRAMA: inprmt020
|
|
OBEJETIVO: Requisicion de Materia prima
|
|
DESARROLLADO POR: ING. ELVIS GARCÍA
|
|
FECHA DESARROLLO: MARZO 13, 2026
|
|
|
|
|
|
}
|
|
IMPORT os
|
|
GLOBALS "inprgb000.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_intb57.* TO NULL
|
|
CALL arr_intb58.clear()
|
|
CLEAR FORM
|
|
|
|
LET tmpnumero = 0
|
|
SELECT a.num_doc
|
|
INTO tmpnumero
|
|
FROM intb00047 a
|
|
WHERE usuario = usuarios
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO intb00047 VALUES(0, usuarios)
|
|
LET tmpnumero = 1
|
|
ELSE
|
|
LET tmpnumero = tmpnumero + 1
|
|
UPDATE intb00047
|
|
SET num_doc = tmpnumero
|
|
WHERE usuario = usuarios
|
|
END IF
|
|
|
|
LET p_intb57.numero_doc = tmpnumero
|
|
DISPLAY BY NAME p_intb57.numero_doc
|
|
LET p_intb57.bodega = 3
|
|
|
|
LET opcion = "Adicionar"
|
|
LET subject = 'CREACION REQUISICION PARA ALMACEN NO.'
|
|
CALL entradas()
|
|
|
|
|
|
ON ACTION anular ATTRIBUTE(TEXT = "Anular", IMAGE = "garbage")
|
|
LET p_intb57.numero_doc = arr_busqueda[arr_curr()].numeroid
|
|
LET p_intb57.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_intb57.*,arr_intb58
|
|
CALL impdocumentos_prima(
|
|
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 intb00005 a,
|
|
intb00057 b INNER JOIN intb00061 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_intb57.cod_mov = arr_busqueda[i].cod_mov
|
|
LET p_intb57.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 intb00005 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_intb57.cod_mov,
|
|
p_intb57.num_oc,
|
|
p_intb57.orden_trabajo,
|
|
p_intb57.observacion,
|
|
p_intb57.bodega,
|
|
p_intb57.bodega_destino,
|
|
p_intb57.url_file
|
|
ATTRIBUTE(WITHOUT DEFAULTS)
|
|
ON ACTION abrirdocumento
|
|
IF p_intb57.url_file IS NOT NULL THEN
|
|
CALL ui.Interface.frontCall(
|
|
"standard", "launchURL", [p_intb57.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_intb57.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 intb00060(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_intb57.fecha = TODAY
|
|
ELSE
|
|
IF p_intb57.estado = 'AUTORIZADA' THEN
|
|
CALL msg(1004)
|
|
EXIT DIALOG
|
|
END IF
|
|
END IF
|
|
DISPLAY BY NAME p_intb57.fecha
|
|
IF p_intb57.num_oc IS NOT NULL THEN
|
|
LET ordenPedidos = TRUE
|
|
ELSE
|
|
LET ordenPedidos = FALSE
|
|
END IF
|
|
AFTER FIELD num_oc
|
|
IF p_intb57.num_oc IS NOT NULL AND ordenPedidos = FALSE THEN
|
|
|
|
SELECT a.cod_sp, a.cod_sp_sec, b.nom_sp
|
|
INTO p_intb57.tipo_cliente,
|
|
p_intb57.sec_cliente,
|
|
p_intb57.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_intb57.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_intb57.tipo_cliente,
|
|
p_intb57.sec_cliente,
|
|
p_intb57.cliente
|
|
END IF
|
|
|
|
AFTER FIELD orden_trabajo
|
|
IF p_intb57.orden_trabajo IS NOT NULL THEN
|
|
INITIALIZE fakedata.* TO NULL
|
|
CALL ApiMaintainC('CHECK', p_intb57.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_intb57.cod_mov IS NOT NULL THEN
|
|
LET nombreMov =
|
|
ui.ComboBox.forName('formonly.cod_mov')
|
|
.getTextOf(p_intb57.cod_mov)
|
|
|
|
SELECT a.requiere_autorizacion {,a.control_transferencia}
|
|
INTO requiere {,transacc.control_transferencia }
|
|
FROM intb00005 a
|
|
WHERE a.cod_mov = p_intb57.cod_mov
|
|
|
|
IF requiere = "NO" THEN
|
|
LET xestado = 'AUTORIZADA'
|
|
ELSE
|
|
LET xestado = 'NO AUTORIZADA'
|
|
END IF
|
|
END IF
|
|
AFTER FIELD bodega
|
|
IF p_intb57.bodega IS NOT NULL THEN
|
|
LET nombreBodega =
|
|
ui.ComboBox.forName('formonly.bodega')
|
|
.getTextOf(p_intb57.bodega)
|
|
CALL emailbodegas() RETURNING emailadd
|
|
END IF
|
|
AFTER FIELD bodega_destino
|
|
IF p_intb57.bodega_destino IS NOT NULL THEN
|
|
LET nombreBodegaDestino =
|
|
ui.ComboBox.forName('formonly.bodega_destino')
|
|
.getTextOf(p_intb57.bodega_destino)
|
|
END IF
|
|
|
|
AFTER INPUT
|
|
IF p_intb57.bodega IS NULL THEN
|
|
|
|
CALL msg(16)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
|
|
IF p_intb57.bodega IS NOT NULL THEN
|
|
LET nombreBodega =
|
|
ui.ComboBox.forName('formonly.bodega')
|
|
.getTextOf(p_intb57.bodega)
|
|
CALL emailbodegas() RETURNING emailadd
|
|
END IF
|
|
|
|
{ IF transacc.control_transferencia = "SI" THEN
|
|
IF p_intb57.bodega_destino IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega_destino
|
|
END IF
|
|
END IF }
|
|
|
|
IF p_intb57.num_oc IS NOT NULL THEN
|
|
|
|
SELECT a.cod_sp, a.cod_sp_sec, b.nom_sp
|
|
INTO p_intb57.tipo_cliente,
|
|
p_intb57.sec_cliente,
|
|
p_intb57.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_intb57.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_intb57.tipo_cliente,
|
|
p_intb57.sec_cliente,
|
|
p_intb57.cliente
|
|
IF p_intb57.cod_mov IS NOT NULL THEN
|
|
LET nombreMov =
|
|
ui.ComboBox.forName('formonly.cod_mov')
|
|
.getTextOf(p_intb57.cod_mov)
|
|
END IF
|
|
|
|
IF p_intb57.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, intb00001 b
|
|
WHERE a.num_oc = p_intb57.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_intb58[idx].*
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
END IF
|
|
END IF
|
|
END INPUT
|
|
|
|
INPUT ARRAY arr_intb58 FROM sdetalle.* ATTRIBUTE(WITHOUT DEFAULTS)
|
|
ON ACTION buscar
|
|
LET idx = arr_curr()
|
|
LET scr_l = scr_line()
|
|
CALL busca_prod(
|
|
'03')
|
|
RETURNING arr_intb58[idx].cod_n,
|
|
arr_intb58[idx].cod_grupo,
|
|
arr_intb58[idx].cod_tipo,
|
|
arr_intb58[idx].cod_sec,
|
|
arr_intb58[idx].descripcion
|
|
CALL producto()
|
|
IF tienedespiece THEN
|
|
LET dcodn = arr_intb58[idx].cod_n
|
|
LET dcodgrupo = arr_intb58[idx].cod_grupo
|
|
LET dcodtipo = arr_intb58[idx].cod_tipo
|
|
LET dcodsec = arr_intb58[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_intb58[idx].cod_n
|
|
LET dcodgrupo = arr_intb58[idx].cod_grupo
|
|
LET dcodtipo = arr_intb58[idx].cod_tipo
|
|
LET dcodsec = arr_intb58[idx].cod_sec
|
|
|
|
CALL despiece()
|
|
END IF
|
|
NEXT FIELD cantidad_1 }
|
|
|
|
BEFORE ROW
|
|
LET idx = arr_curr()
|
|
LET arr_intb58[idx].area = 1
|
|
DISPLAY arr_intb58[idx].area TO sdetalle[scr_line()].area
|
|
AFTER FIELD cod_Sec
|
|
LET idx = arr_curr()
|
|
IF arr_intb58[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_intb58[idx].cod_n
|
|
LET dcodgrupo = arr_intb58[idx].cod_grupo
|
|
LET dcodtipo = arr_intb58[idx].cod_tipo
|
|
LET dcodsec = arr_intb58[idx].cod_sec
|
|
|
|
CALL despiece()
|
|
END IF
|
|
|
|
IF p_intb57.num_oc IS NOT NULL THEN
|
|
{SELECT DISTINCT a.cod_sp FROM cotb00015 a WHERE a.num_oc = p_intb57.num_oc AND
|
|
a.cod_n = arr_intb58[idx].cod_n AND
|
|
a.cod_grupo = arr_intb58[idx].cod_grupo AND
|
|
a.cod_tipo = arr_intb58[idx].cod_tipo AND
|
|
a.cod_sec = arr_intb58[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_intb57.num_oc
|
|
AND b.cod_n = arr_intb58[idx].cod_n
|
|
AND b.cod_grupo = arr_intb58[idx].cod_grupo
|
|
AND b.cod_tipo = arr_intb58[idx].cod_tipo
|
|
AND b.cod_sec = arr_intb58[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_intb58[idx].cantidad_1 IS NOT NULL THEN
|
|
|
|
IF arr_intb58[idx].cantidad_1
|
|
> arr_intb58[idx].cantidad_o1 THEN
|
|
CALL msg(46)
|
|
NEXT FIELD cantidad_1
|
|
END IF
|
|
LET arr_intb58[idx].cantidad =
|
|
arr_intb58[idx].cantidad_1
|
|
* 1 {arr_intb58[idx].factor_conv}
|
|
DISPLAY arr_intb58[idx].cantidad TO sdetalle[scr_l].cantidad
|
|
END IF
|
|
|
|
ON ACTION guardar ATTRIBUTE(TEXT = "Adicionar", IMAGE = "save")
|
|
IF p_intb57.bodega IS NOT NULL THEN
|
|
LET nombreBodega =
|
|
ui.ComboBox.forName('formonly.bodega')
|
|
.getTextOf(p_intb57.bodega)
|
|
END IF
|
|
{ IF transacc.control_transferencia = "SI" THEN
|
|
IF p_intb57.bodega_destino IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega_destino
|
|
END IF
|
|
END IF}
|
|
|
|
IF p_intb57.bodega_destino IS NOT NULL THEN
|
|
LET nombreBodegaDestino =
|
|
ui.ComboBox.forName('formonly.bodega_destino')
|
|
.getTextOf(p_intb57.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_intb57.fecha = TODAY
|
|
IF p_intb57.bodega IS NULL THEN
|
|
CALL msg(16)
|
|
NEXT FIELD bodega
|
|
END IF
|
|
BEGIN WORK
|
|
SELECT a.numero_doc INTO secuencia FROM intb00059 a
|
|
|
|
IF STATUS = NOTFOUND THEN
|
|
INSERT INTO intb00059(
|
|
numero_doc, us_mod, fech_mod)
|
|
VALUES(0, usuarios, getdate())
|
|
END IF
|
|
LET secuencia = secuencia + 1
|
|
LET p_intb57.numero_doc = secuencia
|
|
|
|
UPDATE intb00059
|
|
SET numero_doc = p_intb57.numero_doc,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate()
|
|
|
|
LET subject =
|
|
subject CLIPPED, p_intb57.numero_doc USING "&&&&&&&&"
|
|
|
|
INSERT INTO intb00057(
|
|
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_intb57.numero_doc,
|
|
p_intb57.fecha,
|
|
p_intb57.cod_mov,
|
|
p_intb57.num_oc,
|
|
p_intb57.orden_trabajo,
|
|
p_intb57.tipo_cliente,
|
|
p_intb57.sec_cliente,
|
|
p_intb57.cliente,
|
|
p_intb57.bodega,
|
|
p_intb57.bodega_destino,
|
|
xestado,
|
|
usuarios,
|
|
getdate(),
|
|
p_intb57.observacion,
|
|
p_intb57.url_file,
|
|
5)
|
|
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
DISPLAY 'ROLLBACK 1'
|
|
RETURN
|
|
END IF
|
|
|
|
LET tieneDetalle = "NO"
|
|
FOR idx = 1 TO arr_intb58.getLength()
|
|
IF arr_intb58[idx].cantidad IS NOT NULL THEN
|
|
LET tieneDetalle = "SI"
|
|
IF arr_intb58[idx].cantidad_1
|
|
> arr_intb58[idx].cantidad_o1 THEN
|
|
CALL msg(46)
|
|
ROLLBACK WORK
|
|
END IF
|
|
|
|
{IF arr_intb58[idx].area IS NULL THEN
|
|
ROLLBACK WORK
|
|
CALL msg(16)
|
|
NEXT FIELD area
|
|
END IF}
|
|
INSERT INTO intb00058(
|
|
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_intb57.numero_doc,
|
|
p_intb57.cod_mov,
|
|
arr_intb58[idx].area,
|
|
arr_intb58[idx].cod_n,
|
|
arr_intb58[idx].cod_grupo,
|
|
arr_intb58[idx].cod_tipo,
|
|
arr_intb58[idx].cod_sec,
|
|
arr_intb58[idx].descripcion,
|
|
arr_intb58[idx].unidad_med,
|
|
arr_intb58[idx].cantidad_1,
|
|
arr_intb58[idx].cantidad,
|
|
usuarios,
|
|
getdate())
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
DISPLAY 'ROLLBACK 2'
|
|
RETURN
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
#DESPIECE
|
|
|
|
DELETE FROM intb00060
|
|
WHERE id_despiece = p_intb57.numero_doc
|
|
|
|
EXECUTE insertad USING p_intb57.numero_doc, tmpnumero
|
|
|
|
DELETE FROM tmpdespiece WHERE id_despiece = tmpnumero
|
|
IF tieneDetalle = "SI" THEN
|
|
COMMIT WORK
|
|
CALL msg(1)
|
|
CALL buscarData()
|
|
CALL impdocumentos_prima(
|
|
p_intb57.numero_doc, p_intb57.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_intb57.numero_doc USING "&&&&&&&&"
|
|
BEGIN WORK
|
|
UPDATE intb00057
|
|
SET num_oc = p_intb57.num_oc,
|
|
tipo_cliente = p_intb57.tipo_cliente,
|
|
sec_cliente = p_intb57.sec_cliente,
|
|
nombre = p_intb57.cliente,
|
|
observacion = p_intb57.observacion,
|
|
bodega = p_intb57.bodega,
|
|
bodega_destino = p_intb57.bodega_destino,
|
|
us_mod = usuarios,
|
|
fech_mod = getdate(),
|
|
url_destino = p_intb57.url_file,
|
|
idestado = p_intb57.idstado
|
|
WHERE numero_doc = p_intb57.numero_doc
|
|
AND cod_mov = p_intb57.cod_mov
|
|
|
|
DELETE FROM intb00058
|
|
WHERE numero_doc = p_intb57.numero_doc
|
|
AND cod_mov = p_intb57.cod_mov
|
|
LET tieneDetalle = "NO"
|
|
FOR idx = 1 TO arr_intb58.getLength()
|
|
IF arr_intb58[idx].cantidad IS NOT NULL THEN
|
|
LET tieneDetalle = "SI"
|
|
IF arr_intb58[idx].cantidad_1
|
|
> arr_intb58[idx].cantidad_o1 THEN
|
|
CALL msg(46)
|
|
NEXT FIELD cantidad_1
|
|
END IF
|
|
# IF arr_intb58[idx].area IS NULL THEN
|
|
# ROLLBACK WORK
|
|
# CALL msg(16)
|
|
# NEXT FIELD area
|
|
# END IF
|
|
|
|
INSERT INTO intb00058(
|
|
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_intb57.numero_doc,
|
|
p_intb57.cod_mov,
|
|
arr_intb58[idx].area,
|
|
arr_intb58[idx].cod_n,
|
|
arr_intb58[idx].cod_grupo,
|
|
arr_intb58[idx].cod_tipo,
|
|
arr_intb58[idx].cod_sec,
|
|
arr_intb58[idx].descripcion,
|
|
arr_intb58[idx].unidad_med,
|
|
arr_intb58[idx].cantidad_1,
|
|
arr_intb58[idx].cantidad,
|
|
usuarios,
|
|
getdate())
|
|
|
|
IF STATUS < 0 THEN
|
|
ROLLBACK WORK
|
|
RETURN
|
|
END IF
|
|
|
|
END IF
|
|
END FOR
|
|
#DESPIECE
|
|
|
|
DELETE FROM intb00060
|
|
WHERE id_despiece = p_intb57.numero_doc
|
|
|
|
EXECUTE insertad USING p_intb57.numero_doc, tmpnumero
|
|
DELETE FROM tmpdespiece
|
|
WHERE id_despiece = p_intb57.numero_doc
|
|
IF tieneDetalle = "SI" THEN
|
|
COMMIT WORK
|
|
CALL msg(13)
|
|
CALL buscarData()
|
|
CALL impdocumentos_prima(
|
|
p_intb57.numero_doc, p_intb57.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 intb00006 a
|
|
WHERE a.num_req = p_intb57.numero_doc AND a.cod_mov = p_intb57.cod_mov
|
|
|
|
IF STATUS != NOTFOUND THEN
|
|
CALL msg(1014)
|
|
RETURN
|
|
END IF
|
|
DISPLAY "ANULAR: ", p_intb57.numero_doc
|
|
LET respuesta =
|
|
fgl_winquestion(
|
|
"Borrar",
|
|
"Esta seguro de elminiar esta requisicion?",
|
|
"NO",
|
|
"YES|NO",
|
|
"QUESTION",
|
|
0)
|
|
|
|
IF respuesta = "YES" THEN
|
|
UPDATE intb00057
|
|
SET status_t = 'E', us_mod = usuarios, fech_mod = getdate()
|
|
WHERE numero_doc = p_intb57.numero_doc
|
|
AND cod_mov = p_intb57.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_intb58[idx].descripcion, arr_intb58[idx].unidad_med, pcodn
|
|
FROM intb00001 a
|
|
LEFT OUTER
|
|
JOIN intb00028 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_intb58[idx].cod_n
|
|
AND a.cod_grupo = arr_intb58[idx].cod_grupo
|
|
AND a.cod_tipo = arr_intb58[idx].cod_tipo
|
|
AND a.cod_sec = arr_intb58[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_intb57.num_oc IS NOT NULL THEN
|
|
LET xcuerpo1 =
|
|
xcuerpo1 CLIPPED,
|
|
"<h2>Orden:",
|
|
p_intb57.num_oc USING "&&&&&&&&",
|
|
"</h2>",
|
|
"<h2>Cliente:",
|
|
p_intb57.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_intb58.getLength()
|
|
IF arr_intb58[idx].cod_sec IS NOT NULL THEN
|
|
LET xcuerpo2 =
|
|
xcuerpo2 CLIPPED,
|
|
"<tr><td>",
|
|
arr_intb58[idx].descripcion CLIPPED,
|
|
"</td>",
|
|
"<td>",
|
|
arr_intb58[idx].cantidad_1 USING "##,###.##",
|
|
"</td>",
|
|
"<td>",
|
|
arr_intb58[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_intb57.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
|