Files
MBS/PROYECTO/ipdir/ipprrp049.4gl
T
jpegueroandClaude Sonnet 5 b6085d4140 Mueve ipdir (Productos Terminados) de PROYECTOS a PROYECTO
Instruccion de Johnny: todos los directorios de fuentes de inventario
deben migrarse de la carpeta temporal PROYECTOS a la carpeta real
PROYECTO, ya que PROYECTOS sera eliminada.

Se elimino tambien un archivo suelto sin relacion llamado "ipdir"
que existia en PROYECTO (del commit inicial) y bloqueaba el nombre
de la carpeta.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 09:29:01 -04:00

266 lines
9.0 KiB
Plaintext

IMPORT os
GLOBALS "ipprgb000.4gl"
DEFINE rcol,filename,idioma_office,fila_excel STRING,
p_res,xi,prow SMALLINT,
prog VARCHAR(10),
imagenprinc BYTE,
foldersimagenes STRING
DEFINE result,resultdir,rutadir STRING
MAIN
DEFER INTERRUPT
CALL STARTLOG("iprp49.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT to "smarmotech" AS "SQL_C" USER usuarios USING clave
--CONNECT to "smarmotech" USER usuarios USING clave
CALL ipprrp049()
END MAIN
FUNCTION ipprrp049()
DEFINE data RECORD
categories VARCHAR(50),
enable VARCHAR(10),
family VARCHAR(50),
parent VARCHAR(30),
groups VARCHAR(30),
brand,color VARCHAR(50),
descripcion_config_en_US,descripcion_config_es_ES,description_en_US,
description_es_ES,image_1_dcm,image_conf,name_en_US,name_es_ES
STRING,
cod_n,cod_grupo,cod_tipo,cod_Sec INT,
nombre_file_foto STRING,
codid INT,
precio FLOAT,
sku VARCHAR(30)
END RECORD
DEFINE rec RECORD
path STRING,
name STRING,
wildcards STRING,
caption STRING
END RECORD
DEFINE rec1 RECORD
path STRING,
caption STRING
END RECORD
OPEN WINDOW w1 WITH FORM "ipfmrp049"
INPUT BY NAME idioma_office
CONSTRUCT criterio ON b.categoria FROM idcategoria
ON ACTION imagenes
IF filename IS NULL THEN
CALL fgl_winmessage("INFO","DEBE BUSCAR EL TEMPLATE","INFO")
CONTINUE CONSTRUCT
END IF
LET rec1.path = "/tmp"
LET rec1.caption = "Select directory"
CALL ui.Interface.frontCall("standard","openDir",[rec1.*],[resultdir])
IF resultdir IS NULL THEN
CALL fgl_winmessage("INFO","No directory fue seleccionado.","INFO")
EXIT CONSTRUCT
ELSE
DISPLAY BY NAME resultdir
END IF
BEFORE CONSTRUCT
CALL otcategorias("CONSTRUCT")
ON ACTION buscarfile ATTRIBUTE(TEXT="Buscar Archivo")
LET rec.path = "./"
LET rec.name = "excel files"
LET rec.wildcards = "*.xls *.xlsx"
LET rec.caption = "Open file"
CALL ui.Interface.frontCall("standard","openFile",[rec.*],[result])
IF idioma_office = "E" THEN
LET fila_excel = "F"
ELSE
LET fila_excel = "R"
END IF
LET filename = result
CALL ui.Interface.frontCall("standard","shellexec", [filename], [p_res] )
CALL chqDdeError(p_res,"shellexec "||filename)
DISPLAY BY NAME filename
ON ACTION procesa
CALL ui.Interface.frontCall("WINDDE","DDEConnect", [prog,filename], [p_res] )
CALL chqDdeError(p_res,"DDEConnect "||filename)
CALL ui.Interface.refresh()
IF filename IS NULL OR LENGTH(filename) < 11 THEN
CALL fgl_winmessage("INFO","EL FILE PARA IMPORTAR LA DATA NO SE HA ESPECIFICADO O EL NOMBRE ES MUY CORTO","INFO")
RETURN
END IF
LET selec =
"select b.descripcion_esp as categoria,'1',d.descripcion as familia,' ',' ',c.descripcion as marca,
' ',c.detalle_us,c.detalle_esp,a.descripcion_us,a.descripcion_user,' ',' ',a.descripcion_us,a.descripcion,
a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.nombre_file_foto,a.codid
FROM iptb00016 a,categorias b,
brand c,familia d
WHERE a.id_categoria = b.id_categoria and a.id_brand = c.id_brand and
a.id_familia = d.id_familia
"
{"select b.descripcion_esp as categoria,'1',d.descripcion as familia,a.descripcion_us,a.propiedades,c.descripcion as marca,
a.propiedades1,a.descripcion,a.descripcion_user,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec
FROM iptb00016 a,categorias b,
brand c,familia d
WHERE a.id_categoria = b.id_categoria and a.id_brand = c.id_brand and
a.id_familia = d.id_familia
"}
IF filename IS NULL THEN
CALL fgl_winmessage("INFO","DEBE BUSCAR EL TEMPLATE","INFO")
CONTINUE CONSTRUCT
END IF
IF resultdir IS NULL THEN
CALL fgl_winmessage("INFO","DEBE ELEGIR EL FOLDER PARA LA GALERIA DE FOTOS","INFO")
CONTINUE CONSTRUCT
END IF
PREPARE comando FROM selec
DECLARE busca CURSOR FOR comando
LET prow = 2
FOREACH busca INTO data.*
LET data.sku = data.cod_n USING "&&&&","-",data.cod_grupo USING "&&&&","-",
data.cod_tipo USING "&&&&","-",data.cod_sec USING "&&&&&&&"
LET rutadir = resultdir CLIPPED,"/",data.sku CLIPPED,'.jpg'
CALL guardafoto(data.codid,rutadir)
LET rcol = "C1"
LET xi = prow
CALL pru_new_dde(data.sku,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C2"
LET xi = prow
CALL pru_new_dde(data.categories,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C3"
LET xi = prow
CALL pru_new_dde(data.enable,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C4"
LET xi = prow
CALL pru_new_dde(data.family,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C5"
LET xi = prow
CALL pru_new_dde(data.parent,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C6"
LET xi = prow
CALL pru_new_dde(data.brand,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C7"
LET xi = prow
CALL pru_new_dde(data.color,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C8"
LET xi = prow
CALL pru_new_dde(data.descripcion_config_en_US,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C9"
LET xi = prow
CALL pru_new_dde(data.descripcion_config_es_ES,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C10"
LET xi = prow
CALL pru_new_dde(data.description_en_US,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C11"
LET xi = prow
CALL pru_new_dde(data.description_es_ES,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C12"
LET xi = prow
CALL pru_new_dde(data.name_en_US,rcol,xi,fila_excel,filename,'EXCEL')
LET rcol = "C14"
LET xi = prow
CALL pru_new_dde(rutadir,rcol,xi,fila_excel,filename,'EXCEL')
CALL galeria(data.codid)
LET prow = prow + 1
END FOREACH
IF prow < 3 THEN
CALL fgl_winmessage("INFO","NO EXISTEN INFORMACIONES CON ESTA CONDICION","INFO")
END IF
AFTER CONSTRUCT
IF int_flag THEN
CALL fgl_Winmessage("INFO","OPERACION CANCELADA","INFO")
LET int_flag = FALSE
EXIT CONSTRUCT
END IF
EXIT CONSTRUCT
END CONSTRUCT
CLOSE WINDOW w1
END FUNCTION
FUNCTION guardafoto(idcod,ruta)
DEFINE bfoto BYTE,
idcod INT,
ruta,nombrefile,ret STRING
LOCATE bfoto IN MEMORY
SELECT a.foto INTO bfoto FROM iptb00016 a
WHERE a.codid = idcod
IF os.Path.exists(ruta) THEN
CALL os.Path.delete(ruta) RETURNING ret
END IF
CALL bfoto.writeFile(ruta)
FREE bfoto
END FUNCTION
FUNCTION galeria(xidcod)
DEFINE xidcod,i,col INT,
arrgal DYNAMIC ARRAY OF RECORD
nombre_file STRING,
imagen BYTE
END RECORD,
rutadirgal,ret STRING
DECLARE busca_gal CURSOR FOR
SELECT a.nombre_file,a.imagen FROM iptb00018 a
WHERE a.codid = xidcod
LET i = 1
LET rutadirgal = resultdir CLIPPED,"/galeria"
IF os.Path.exists(rutadirgal) THEN
ELSE
CALL os.Path.mkdir(rutadirgal) RETURNING ret
END IF
LOCATE arrgal[i].imagen IN MEMORY
LET col = 15
FOREACH busca_gal INTO arrgal[i].*
LET rutadir = rutadirgal CLIPPED,"/",arrgal[i].nombre_file
DISPLAY xidcod," ruta galeria ",rutadir
CALL arrgal[i].imagen.writeFile(rutadir)
LET rcol = "C",col USING "<<<"
LET xi = prow
CALL pru_new_dde(rutadir,rcol,xi,fila_excel,filename,'EXCEL')
FREE arrgal[i].imagen
# IF i < 7 THEN
# EXIT FOREACH
# END IF
LET i = i +1
LET col = col + 1
LOCATE arrgal[i].imagen IN MEMORY
END FOREACH
END FUNCTION