Files
MBS/PROYECTO/ipdir/ipprmt075.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

909 lines
42 KiB
Plaintext

IMPORT OS
SCHEMA "smarmotech"
GLOBALS
DEFINE datos RECORD
cod_n CHAR(10),
cod_grupo CHAR(10),
cod_tipo CHAR(10),
cod_sec CHAR(10),
codid INT,
online VARCHAR(2),
descripcion VARCHAR(100),
descripcion_user VARCHAR(100),
descripcion_us VARCHAR(100),
id_categoria,id_familia,id_subfamilia,id_brand,id_collection INT,
metadata VARCHAR(100),
factor_conv FLOAT,
precio FLOAT,
precio_usd FLOAT,
unidad_med VARCHAR(10),
existencia_min decimal(12,5),
lado_1,lado_2,lado_3,lado_4 DEC(12,5),
propiedades TEXT,
propiedades1 TEXT,
us_crea char(50),
fech_crea DATE,
nombre_file_foto varchar(100),
nombre_file_ficha,nombre_file_ficha2 varchar(100),
tasa DEC(12,2),
ruta_file_foto ,
ruta_file_ficha,
ruta_file_ficha1 VARCHAR(255)
END RECORD,
filetmp,selec, criterio_productos, comando STRING,
usuarios,clave CHAR(50),
d_tipos, f_tipos, filedestino, fichadestino,fichadestino1, filedestinovacio,
xnombreFile, mensaje, imagen_file, tmpdir_file, dir_file, filepath, l_file, p_res STRING,
pimagen,pficha1, pficha BYTE,
ficha_tecnica,ficha_tecnica1 byte,
respuesta char(3),
existe BOOLEAN,
operacion CHAR(1),
idx INT
DEFINE secuencia INT,
tipoOperacion VARCHAR(3)
DEFINE arr_productos DYNAMIC ARRAY OF RECORD
codigo VARCHAR(25),
descripcion1 VARCHAR(100),
unidadMed VARCHAR(4),
categoria VARCHAR(100),
existencia DEC(12,5),
precio_usd1 DEC(12,2),
codn1,codgrupo1,codtipo1,codSec1 INT,
nombre_file_foto1,nombre_file_ficha1,nombre_file_ficha3 VARCHAR(100),
codn2,codid1 INT,
descripcion_us1,descripcion_es1 VARCHAR(100),
precio1 DEC(12,2),
idcategoria1,idbrand,idfamilia INT,
ruta_ficha1,ruta_ficha2,ruta_foto1 STRING,
factor DEC(12,5),
online1 VARCHAR(2)
END RECORD,
galeria_fotos DYNAMIC ARRAY OF RECORD
nombre_galeria VARCHAR(100),
ruta_file_foto STRING
END RECORD
DEFINE url_ficha,criterio,selec STRING,
cantidadReg INT,
relacionados DYNAMIC ARRAY OF RECORD
cod_n2,cod_grupo2,cod_tipo2,cod_sec2 INT,
descripcion2 STRING,
precio2 FLOAT,
obligatorio VARCHAR(10),
codid_relacionado INT
END RECORD
END GLOBALS
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CONNECT TO "smarmotech" USER usuarios USING clave
CALL pprmt075()
END MAIN
FUNCTION pprmt075()
OPEN WINDOW HOME_FRM WITH FORM 'ipfmmt075'
MENU
ON ACTION procesar
LET operacion = 'N'
CLEAR FORM
CALL buscaProductos()
ON ACTION Salir
EXIT MENU
END MENU
CLOSE WINDOW HOME_FRM
END FUNCTION
FUNCTION nuevosDatos()
DIALOG ATTRIBUTE(UNBUFFERED)
INPUT BY NAME datos.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE INPUT
LET int_flag = FALSE
CALL otcategorias("input")
CALL familia()
CALL brand()
CALL collection()
AFTER FIELD id_familia
CALL familiasub(datos.id_familia)
ON ACTION busca_imagen
LET tipoOperacion = 'PRI'
CALL adicionaimagen()
ON ACTION busca_ficha_tecnica
CALL busca_ficha()
ON ACTION busca_ficha_tecnica1
CALL busca_ficha1()
ON ACTION abrir_doc
CALL abrir_documento()
ON ACTION abrir_doc1
CALL abrir_documento1()
ON ACTION salvar
IF datos.precio IS NULL THEN
CALL msg(16)
NEXT FIELD precio
END IF
IF datos.descripcion_user IS NULL THEN
CALL msg(16)
NEXT FIELD descripcion_user
END IF
IF datos.online IS NULL THEN
LET datos.online = 'NO'
END IF
IF operacion = "M" THEN
BEGIN WORK
UPDATE iptb00016
SET descripcion_user = datos.descripcion_user, precio = datos.precio,
precio_usd = datos.precio_usd,
descripcion_us = datos.descripcion_us,
existencia_minima = datos.existencia_min,
us_mod = usuarios,
fech_mod = getdate(),
id_categoria = datos.id_categoria,
id_familia = datos.id_familia,
id_subfamilia = datos.id_subfamilia,
id_brand = datos.id_brand,
id_product_collection = datos.id_collection,
propiedades = datos.propiedades,
propiedades1 = datos.propiedades1,
metadata = datos.metadata,
nombre_file_foto = datos.nombre_file_foto,
nombre_file_ficha = datos.nombre_file_ficha,
nombre_file_ficha1 = datos.nombre_file_ficha2,
online = datos.online,
# ficha_tecnica1 = pficha1,
lado_1 = datos.lado_1,
lado_2 = datos.lado_2,
lado_3 = datos.lado_3,
lado_4 = datos.lado_4,
ruta_foto = datos.ruta_file_foto,
ruta_file_ficha = datos.ruta_file_ficha,
ruta_file_ficha1 = datos.ruta_file_ficha1,
factor_conv = datos.factor_conv
WHERE cod_n = datos.cod_n AND cod_grupo = datos.cod_grupo AND cod_tipo = datos.cod_tipo AND cod_sec =datos.cod_sec
DELETE FROM iptb00018 WHERE codid = datos.codid
FOR idx = 1 TO galeria_fotos.getLength()
IF galeria_fotos[idx].nombre_galeria IS NOT NULL AND galeria_fotos[idx].ruta_file_foto IS NOT NULL THEN
INSERT INTO iptb00018 (nombre_file,codid,cod_n,cod_grupo,cod_tipo,cod_sec,ruta_file_foto)
VALUES (galeria_fotos[idx].nombre_galeria,datos.codid,datos.cod_n,datos.cod_grupo,
datos.cod_tipo,datos.cod_sec,galeria_fotos[idx].ruta_file_foto)
END IF
END FOR
DELETE FROM iptb00038 WHERE codid = datos.codid
FOR idx = 1 TO relacionados.getLength()
IF relacionados[idx].cod_n2 IS NOT NULL THEN
IF relacionados[idx].precio2 IS NULL THEN
ROLLBACK WORK
CALL msg(85)
END IF
IF relacionados[idx].obligatorio IS NULL THEN
ROLLBACK WORK
CALL msg(16)
END IF
IF relacionados[idx].codid_relacionado = datos.codid THEN
ROLLBACK WORK
CALL msg(1002)
END IF
#VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA
SELECT a.codid FROM iptb00016 a WHERE a.cod_n = relacionados[idx].cod_n2 AND
a.cod_Grupo = relacionados[idx].cod_grupo2 AND
a.cod_tipo = relacionados[idx].cod_tipo2 AND
a.cod_Sec = relacionados[idx].cod_sec2
IF STATUS = NOTFOUND THEN
ROLLBACK WORK
CALL msg(1003)
END IF
INSERT INTO iptb00038 (codid,codid_relacionado,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,precio,
obligatorio )
VALUES (datos.codid, relacionados[idx].codid_relacionado,
relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,relacionados[idx].cod_tipo2,
relacionados[idx].cod_sec2,relacionados[idx].descripcion2,relacionados[idx].precio2,
relacionados[idx].obligatorio)
END IF
END FOR
COMMIT WORK
CALL msg(13)
ELSE
BEGIN WORK
INSERT INTO iptb00016(codid, cod_n, cod_grupo, cod_tipo, cod_sec, descripcion,
unidad_med, precio, precio_usd, descripcion_user, fech_crea, us_crea,
nombre_file_foto, nombre_file_ficha, existencia_minima,
id_categoria,id_familia,id_brand,id_product_collection,propiedades,descripcion_us,
tasa,nombre_file_ficha1,metadata,propiedades1,
lado_1,lado_2,lado_3,lado_4,ruta_foto,ruta_file_ficha,ruta_file_ficha1,
factor_conv,id_subfamilia,online,fech_mod
)
VALUES(datos.codid, datos.cod_n, datos.cod_grupo, datos.cod_tipo, datos.cod_sec, datos.descripcion,
datos.unidad_med, datos.precio, datos.precio_usd, datos.descripcion_user, getdate(), usuarios,
datos.nombre_file_foto, datos.nombre_file_ficha, datos.existencia_min,
datos.id_categoria,datos.id_familia,datos.id_brand,datos.id_collection,
datos.propiedades,datos.descripcion_us,datos.tasa,datos.nombre_file_ficha2,datos.metadata,
datos.propiedades1,datos.lado_1,datos.lado_2,datos.lado_3,datos.lado_4,
datos.ruta_file_foto,datos.ruta_file_ficha,datos.ruta_file_ficha1,datos.factor_conv,
datos.id_subfamilia,datos.online,getdate())
FOR idx = 1 TO galeria_fotos.getLength()
IF galeria_fotos[idx].nombre_galeria IS NOT NULL AND galeria_fotos[idx].ruta_file_foto IS NOT NULL THEN
INSERT INTO iptb00018 (nombre_file,codid,cod_n,cod_grupo,cod_tipo,cod_sec,ruta_file_foto)
VALUES (galeria_fotos[idx].nombre_galeria,datos.codid,datos.cod_n,datos.cod_grupo,
datos.cod_tipo,datos.cod_sec,galeria_fotos[idx].ruta_file_foto)
END IF
END FOR
# PRODUCTOS RELACIONADOS
FOR idx = 1 TO relacionados.getLength()
IF relacionados[idx].cod_n2 IS NOT NULL THEN
IF relacionados[idx].precio2 IS NULL THEN
ROLLBACK WORK
CALL msg(85)
END IF
IF relacionados[idx].obligatorio IS NULL THEN
ROLLBACK WORK
CALL msg(16)
END IF
IF relacionados[idx].codid_relacionado = datos.codid THEN
ROLLBACK WORK
CALL msg(1002)
END IF
#VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA
SELECT a.codid FROM iptb00016 a WHERE a.cod_n = relacionados[idx].cod_n2 AND
a.cod_Grupo = relacionados[idx].cod_grupo2 AND
a.cod_tipo = relacionados[idx].cod_tipo2 AND
a.cod_Sec = relacionados[idx].cod_sec2
IF STATUS = NOTFOUND THEN
ROLLBACK WORK
CALL msg(1003)
END IF
INSERT INTO iptb00038 (codid,codid_relacionado,cod_n,cod_grupo,cod_tipo,cod_sec,descripcion,precio,
obligatorio )
VALUES (datos.codid,relacionados[idx].codid_relacionado,
relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,relacionados[idx].cod_tipo2,
relacionados[idx].cod_sec2,relacionados[idx].descripcion2,relacionados[idx].precio2,
relacionados[idx].obligatorio)
END IF
END FOR
COMMIT WORK
CALL msg(1)
LET operacion ="M"
END IF
CALL refrescar()
AFTER FIELD lado_2
IF datos.lado_2 IS NOT NULL THEN
IF datos.lado_1 IS NULL THEN
CALL msg(16)
NEXT FIELD lado_1
END IF
LET datos.lado_4 = datos.lado_1 * datos.lado_2
DISPLAY BY NAME datos.lado_4
END IF
AFTER FIELD lado_3
IF datos.lado_3 IS NOT NULL THEN
IF datos.lado_1 IS NULL THEN
CALL msg(16)
NEXT FIELD lado_1
END IF
IF datos.lado_2 IS NULL THEN
CALL msg(16)
NEXT FIELD lado_2
END IF
LET datos.lado_4 = datos.lado_1 * datos.lado_2 * datos.lado_3
DISPLAY BY NAME datos.lado_4
END IF
END INPUT
# Galeria de fotos
INPUT ARRAY galeria_fotos FROM sfotos1.*
# BEFORE INPUT
# IF operacion = "M" THEN
# CALL callImagen()
# END IF
BEFORE FIELD nombre_galeria
IF galeria_fotos[arr_curr()].nombre_galeria IS NOT NULL AND Operacion = 'M' THEN
LET filetmp = galeria_fotos[arr_curr()].ruta_file_foto
DISPLAY filetmp TO foto_producto1
END IF
AFTER FIELD nombre_galeria
IF galeria_fotos[arr_curr()].nombre_galeria IS NOT NULL THEN
LET filetmp = galeria_fotos[arr_curr()].ruta_file_foto
DISPLAY filetmp TO foto_producto1
END IF
ON ACTION buscar
LET tipoOperacion = "ARR"
LET secuencia = arr_curr()
CALL adicionaimagen()
LET galeria_fotos[arr_curr()].nombre_galeria = xnombreFile
DISPLAY galeria_fotos[arr_curr()].nombre_galeria TO sfotos1[scr_line()].nombre_galeria
END INPUT
INPUT ARRAY relacionados FROM srelacionados.* ATTRIBUTE(WITHOUT DEFAULTS)
BEFORE ROW
LET idx = arr_curr()
ON ACTION producto ATTRIBUTE(TEXT="Buca Productos",IMAGE="find")
CALL busca_productos('SI',0,0,0,0) RETURNING relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,
relacionados[idx].cod_tipo2,relacionados[idx].cod_sec2,
relacionados[idx].descripcion2,relacionados[idx].precio2,
relacionados[idx].codid_relacionado
DISPLAY relacionados[arr_curr()].descripcion2 TO srelacionados[scr_line()].descripcion2
DISPLAY relacionados[arr_curr()].precio2 TO srelacionados[scr_line()].precio2
AFTER FIELD cod_sec2
IF relacionados[idx].cod_sec2 IS NOT NULL THEN
CALL busca_productos('NO',relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,relacionados[idx].cod_tipo2,
relacionados[idx].cod_sec2)
RETURNING relacionados[idx].cod_n2,relacionados[idx].cod_grupo2,
relacionados[idx].cod_tipo2,relacionados[idx].cod_sec2,
relacionados[idx].descripcion2,relacionados[idx].precio2,
relacionados[idx].codid_relacionado
IF relacionados[idx].precio2 IS NULL THEN
CALL msg(85)
NEXT FIELD cod_n2
END IF
DISPLAY relacionados[arr_curr()].descripcion2 TO srelacionados[scr_line()].descripcion2
DISPLAY relacionados[arr_curr()].precio2 TO srelacionados[scr_line()].precio2
IF relacionados[idx].codid_relacionado = datos.codid THEN
CALL msg(1002)
NEXT FIELD cod_n2
END IF
#VERIFICA SI EL PRODUCTO ESTA EN LA TABLA DE LA TIENDA
SELECT a.codid FROM iptb00016 a WHERE a.cod_n = relacionados[idx].cod_n2 AND
a.cod_Grupo = relacionados[idx].cod_grupo2 AND
a.cod_tipo = relacionados[idx].cod_tipo2 AND
a.cod_Sec = relacionados[idx].cod_sec2
IF STATUS = NOTFOUND THEN
CALL msg(1003)
NEXT FIELD cod_n2
END IF
END IF
AFTER FIELD obligatorio
IF relacionados[idx].cod_sec2 IS NOT NULL THEN
IF relacionados[idx].obligatorio IS NULL THEN
CALL msg(16)
NEXT FIELD cod_n2
END IF
END IF
END INPUT
ON ACTION cancel
CALL msg(2)
INITIALIZE datos.* TO NULL
RETURN
END DIALOG
END FUNCTION
FUNCTION adicionaImagen()
LET d_tipos="Images"
LET f_tipos="*.jpg *.png *.gif"
LET mensaje=%"Elige Imagen"
LET imagen_file = "*.jpg"
CALL ui.interface.frontcall("standard","openfile",[imagen_file,d_tipos,f_tipos,mensaje],filepath)
IF filepath IS NOT NULL THEN
IF secuencia IS NULL THEN
LET secuencia = 0
END IF
IF tipoOperacion = "PRI" THEN
LET datos.nombre_file_foto = datos.cod_n USING '&&&&','-',datos.cod_grupo
USING '&&&&','-',datos.cod_tipo
USING '&&&&','-',datos.cod_sec
USING '&&&&&&',
# "-",
# secuencia USING "&&&",
'.',
OS.Path.extension(filepath)
CALL rutadefecto()
LET filedestino = filedestino CLIPPED,datos.nombre_file_foto
DISPLAY filedestino TO nombre_file_Foto
CALL fgl_getfile(filepath,filedestino)
CALL comprimeImagen(filedestino,' -resize 500x500 ')
LET datos.ruta_file_foto = filedestino
DISPLAY filedestino TO ruta_file_foto
DISPLAY BY NAME datos.nombre_file_foto
ELSE
IF secuencia IS NULL THEN
LET secuencia = 1
END IF
LET xnombreFile='G', datos.cod_n USING '&&&&','-',datos.cod_grupo
USING '&&&&','-',datos.cod_tipo
USING '&&&&','-',datos.cod_sec
USING '&&&&&&', "-",
secuencia USING "&&&",
'.',
OS.Path.extension(filepath)
CALL rutadefecto()
LET filedestino = filedestino CLIPPED,xnombreFile CLIPPED
DISPLAY filedestino TO nombre_file_foto
LET galeria_fotos[secuencia].nombre_galeria = xnombrefile CLIPPED
LET galeria_fotos[secuencia].ruta_file_foto = filedestino
CALL fgl_getfile(filepath,filedestino)
CALL comprimeImagen(filedestino,' -resize 200x300 ')
# CALL rutadefecto()
DISPLAY filedestino TO foto_producto1
END IF
END IF
END FUNCTION
FUNCTION callImagen()
DISPLAY BY NAME datos.*
# LOCATE pimagen IN MEMORY
SELECT a.nombre_file_foto,a.ruta_foto
INTO datos.nombre_file_foto,datos.ruta_file_foto FROM iptb00016 a
WHERE a.cod_n = datos.cod_n AND
a.cod_grupo = datos.cod_grupo AND
a.cod_tipo = datos.cod_tipo AND
a.cod_sec = datos.cod_sec
IF datos.nombre_file_foto IS NULL THEN
LET datos.nombre_file_foto = datos.cod_n USING '&&&&','-',datos.cod_grupo
USING '&&&&','-',datos.cod_tipo
USING '&&&&','-',datos.cod_sec
USING '&&&&&&',
'.',
OS.Path.extension(datos.ruta_file_foto)
END IF
DISPLAY datos.ruta_file_foto TO ruta_file_foto
DECLARE busca_galeria CURSOR FOR
SELECT a.nombre_file,a.ruta_file_foto FROM iptb00018 a WHERE a.codid = datos.codid
LET idx = 1
FOREACH busca_galeria INTO galeria_fotos[idx].*
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION galerias()
DECLARE busca_galeria1 CURSOR FOR
SELECT a.nombre_file,a.ruta_file_foto FROM iptb00018 a WHERE a.codid = datos.codid
LET idx = 1
FOREACH busca_galeria1 INTO galeria_fotos[idx].*
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION relacionadosData()
DECLARE busca_rel CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,a.precio,a.obligatorio,a.codid_relacionado
FROM iptb00038 a
WHERE a.codid = datos.codid
LET idx = 1
FOREACH busca_rel INTO relacionados[idx].*
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION callFicha()
SELECT a.ruta_file_ficha,a.ruta_file_ficha1
INTO datos.ruta_file_ficha,datos.ruta_file_ficha1
FROM iptb00016 a
WHERE a.cod_n = datos.cod_n AND
a.cod_grupo = datos.cod_grupo AND
a.cod_tipo = datos.cod_tipo AND
a.cod_sec = datos.cod_sec
# CALL pficha1.writeFile(fichadestino)
DISPLAY BY NAME datos.nombre_file_ficha2,datos.ruta_file_ficha,datos.ruta_file_ficha1
--LET l_file = l_file CLIPPED,"\\",datos.nombre_file_ficha
--CALL fgl_putfile(tmpdir_file,l_file)
DISPLAY "nombre file p2 ",datos.nombre_file_ficha
END FUNCTION
FUNCTION busca_ficha()
LET d_tipos="Archivos"
LET f_tipos="*.pdf *.xls *.txt *.doc *.docx *.png *.jpg"
LET mensaje=%"Elige Ficha Tecnica"
LET dir_file = "*.pdf"
CALL rutadefecto()
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)) = "txt" OR
downshift(os.Path.extension(filepath)) = "doc" OR
downshift(os.Path.extension(filepath)) = "xls" OR
downshift(os.Path.extension(filepath)) = "docx" OR
downshift(os.Path.extension(filepath)) = "png" OR
downshift(os.Path.extension(filepath)) = "jpg" OR
downshift(os.Path.extension(filepath)) = "xlsx" THEN
LET dir_file = os.Path.basename(filepath)
DISPLAY filepath TO ruta_file_ficha
LET fichadestino = filedestino ,
datos.cod_n USING '&&&&','-',datos.cod_grupo
USING '&&&&','-',datos.cod_tipo
USING '&&&&','-',datos.cod_sec
USING '&&&&&&&','-01','.',
OS.Path.extension(filepath)
CALL fgl_getfile(filepath,fichadestino)
LET datos.nombre_file_ficha = datos.cod_n USING '&&&&','-',datos.cod_grupo
USING '&&&&','-',datos.cod_tipo
USING '&&&&','-',datos.cod_sec
USING '&&&&&&&','-01','.',
OS.Path.extension(filepath)
LET datos.ruta_file_ficha = url_ficha CLIPPED,datos.nombre_file_ficha CLIPPED
DISPLAY BY NAME datos.ruta_file_ficha,datos.nombre_file_ficha
ELSE
CALL fgl_winmessage("ERROR","EL FILE DEBE SER PDF, JPG, PNG, XLS, DOC, DOCX","INFO")
END IF
END IF
END FUNCTION
FUNCTION busca_ficha1()
LET d_tipos="Archivos"
LET f_tipos="*.pdf *.xls *.txt *.doc *.docx *.png *.jpg"
LET mensaje=%"Elige Ficha Tecnica"
LET dir_file = "*.pdf"
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)) = "txt" OR
downshift(os.Path.extension(filepath)) = "doc" OR
downshift(os.Path.extension(filepath)) = "xls" OR
downshift(os.Path.extension(filepath)) = "docx" OR
downshift(os.Path.extension(filepath)) = "png" OR
downshift(os.Path.extension(filepath)) = "jpg" OR
downshift(os.Path.extension(filepath)) = "xlsx" THEN
LET fichadestino1 = filedestino CLIPPED,
datos.cod_n USING '&&&&','-',datos.cod_grupo
USING '&&&&','-',datos.cod_tipo
USING '&&&&','-',datos.cod_sec
USING '&&&&&&&','-02','.',
OS.Path.extension(filepath)
LET dir_file = os.Path.basename(filepath)
DISPLAY filepath TO ruta_file_ficha1
CALL fgl_getfile(filepath,fichadestino1)
LET datos.nombre_file_ficha2 = datos.cod_n USING '&&&&','-',datos.cod_grupo
USING '&&&&','-',datos.cod_tipo
USING '&&&&','-',datos.cod_sec
USING '&&&&&&&','-02','.',
OS.Path.extension(filepath)
CALL rutadefecto()
LET datos.ruta_file_ficha1 = url_ficha CLIPPED,datos.nombre_file_ficha2
DISPLAY BY NAME datos.ruta_file_ficha1, datos.nombre_file_ficha2
ELSE
CALL fgl_winmessage("ERROR","EL FILE DEBE SER PDF, JPG, PNG, XLS, DOC, DOCX","INFO")
END IF
END IF
END FUNCTION
FUNCTION abrir_documento()
TRY
LET tmpdir_file = datos.ruta_file_ficha CLIPPED
DISPLAY "ruta ficha ",tmpdir_file
# CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] )
# LET l_file = l_file CLIPPED,"\\",datos.nombre_file_ficha
# CALL fgl_putfile(tmpdir_file,l_file)
# DISPLAY "lfile ",l_file
# CALL ui.Interface.frontCall("standard","shellexec", [l_file],[p_res])
CALL ui.Interface.frontCall("standard","launchURL",[datos.ruta_file_ficha],[])
CATCH
CALL fgl_winmessage("ERROR",err_get(STATUS),"INFO")
END TRY
END FUNCTION
FUNCTION abrir_documento1()
DISPLAY "file ",datos.nombre_file_ficha2
TRY
LET tmpdir_file = datos.ruta_file_ficha1 CLIPPED
CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] )
LET l_file = l_file CLIPPED,"\\",datos.nombre_file_ficha2
CALL fgl_putfile(tmpdir_file,l_file)
CALL ui.Interface.frontCall("standard","shellexec", [l_file],[p_res])
CATCH
CALL fgl_winmessage("ERROR",err_get(STATUS),"INFO")
END TRY
END FUNCTION
FUNCTION buscaProductos()
DEFINE mensajes VARCHAR(100),
tasa DEC(12,2)
CALL ui.Interface.LoadStyles("mbsStyle")
DIALOG ATTRIBUTE(UNBUFFERED)
DISPLAY ARRAY arr_productos TO sproductos.*
BEFORE DISPLAY
CALL arr_productos.clear()
CALL criterioBusqueda() RETURNING mensajes
IF mensajes = "NO EXISTEN REGISTROS CON ESA CONDICION" THEN
CALL fgl_winmessage("INFO",mensajes,"INFO")
RETURN
END IF
ON ACTION actualiza ATTRIBUTE(TEXT="Actualizar")
INITIALIZE datos.* TO NULL
LOCATE datos.propiedades IN MEMORY
LOCATE datos.propiedades1 IN MEMORY
CALL galeria_fotos.clear()
CALL relacionados.clear()
DISPLAY BY NAME datos.*
LET datos.id_categoria = arr_productos[arr_curr()].idcategoria1
LET datos.id_familia = arr_productos[arr_curr()].idfamilia
LET datos.id_brand = arr_productos[arr_curr()].idbrand
LET datos.online = arr_productos[arr_curr()].online1
LET datos.precio_usd = arr_productos[arr_curr()].precio_usd1
SELECT ISNULL(a.prima,1) INTO datos.tasa FROM vetb00019 a WHERE a.disponible = 'S'
IF arr_productos[arr_curr()].codn2 IS NULL THEN
LET operacion = 'N'
SELECT ISNULL(AVG(a.precio),0) INTO datos.precio_usd FROM vetb00025 a
WHERE a.cod_n = arr_productos[arr_curr()].codn1 AND
a.cod_grupo = arr_productos[arr_curr()].codgrupo1 AND
a.cod_tipo = arr_productos[arr_curr()].codtipo1 AND
a.cod_sec = arr_productos[arr_curr()].codSec1 AND
a.ventas = 3
LET datos.precio = datos.precio_usd * datos.tasa
LET datos.factor_conv =0
SELECT a.factor_conv INTO datos.factor_conv FROM iptb00001 a
WHERE a.cod_n = arr_productos[arr_curr()].codn1 AND
a.cod_grupo = arr_productos[arr_curr()].codgrupo1 AND
a.cod_tipo = arr_productos[arr_curr()].codtipo1 AND
a.cod_sec = arr_productos[arr_curr()].codSec1
ELSE
LET operacion = 'M'
LET datos.precio_usd = arr_productos[arr_curr()].precio_usd1
LET datos.factor_conv = arr_productos[arr_curr()].factor
END IF
IF arr_productos[arr_curr()].precio1 IS NULL THEN
LET datos.precio = arr_productos[arr_curr()].precio_usd1 *
datos.tasa
ELSE
LET datos.precio = arr_productos[arr_curr()].precio1
END IF
LET datos.codid =arr_productos[arr_curr()].codid1
LET datos.cod_n = arr_productos[arr_curr()].codn1
LET datos.cod_tipo = arr_productos[arr_curr()].codtipo1
LET datos.cod_grupo = arr_productos[arr_curr()].codgrupo1
LET datos.cod_sec = arr_productos[arr_curr()].codsec1
LET datos.descripcion = arr_productos[arr_curr()].descripcion1
LET datos.unidad_med = arr_productos[arr_curr()].unidadMed
LET datos.descripcion_us = arr_productos[arr_curr()].descripcion_us1
LET datos.descripcion_user = arr_productos[arr_curr()].descripcion_es1
#LET datos.precio = arr_productos[arr_curr()].precio1
LET datos.ruta_file_ficha = arr_productos[arr_curr()].ruta_ficha1
LET datos.ruta_file_ficha1 = arr_productos[arr_curr()].ruta_ficha2
LET datos.ruta_file_foto = arr_productos[arr_curr()].ruta_foto1
LET datos.nombre_file_ficha = arr_productos[arr_curr()].nombre_file_ficha1
LET datos.nombre_file_ficha2 = arr_productos[arr_curr()].nombre_file_ficha3
LET datos.existencia_min = arr_productos[arr_curr()].existencia
SELECT a.propiedades,a.metadata,a.lado_1,a.lado_2,a.lado_3,a.lado_4
INTO datos.propiedades,datos.metadata,datos.lado_1,datos.lado_2,datos.lado_3,datos.lado_4
FROM iptb00016 a
WHERE a.codid = datos.codid
SELECT a.propiedades1 INTO datos.propiedades1 FROM iptb00016 a
WHERE a.codid = datos.codid
DISPLAY BY NAME datos.propiedades,datos.precio,datos.precio_usd,
datos.propiedades1,datos.metadata,datos.lado_1,datos.lado_2,
datos.lado_3,datos.lado_4,datos.ruta_file_foto,datos.factor_conv,
datos.online
CALL galerias()
CALL relacionadosData()
{ IF arr_productos[arr_curr()].nombre_file_foto1 IS NOT NULL THEN
LET filedestino = 'tmp\\',arr_productos[arr_curr()].nombre_file_foto1 CLIPPED
CALL callImagen()
END IF
IF arr_productos[arr_curr()].nombre_file_ficha1 IS NOT NULL THEN
LET fichadestino = 'tmp\\',arr_productos[arr_curr()].nombre_file_ficha1 CLIPPED
LET datos.nombre_file_ficha = arr_productos[arr_curr()].nombre_file_ficha1
CALL callFicha()
END IF
IF arr_productos[arr_curr()].nombre_file_ficha3 IS NOT NULL THEN
LET fichadestino1 = 'tmp\\',arr_productos[arr_curr()].nombre_file_ficha3 CLIPPED
LET datos.nombre_file_ficha2 = arr_productos[arr_curr()].nombre_file_ficha3
CALL callFicha1()
END IF
}
CALL nuevosDatos()
ON ACTION CANCEL
CALL fgl_winmessage("INFO","OPERACION ABORTADA","INFO")
RETURN
END DISPLAY
END DIALOG
END FUNCTION
FUNCTION criterioBusqueda()
CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, b.id_categoria
FROM codn,codgrupo,codtipo,codsec, idcategoria
BEFORE CONSTRUCT
# CALL clase()
# CALL grupos()
CLEAR FORM
CALL otcategorias("CONSTRUCT")
AFTER CONSTRUCT
EXIT CONSTRUCT
END CONSTRUCT
IF int_flag THEN
LET int_flag = FALSE
RETURN "EXITO"
END IF
LET selec = "select '',a.descrip_esp,a.unidad_med,ISNULL(c.descripcion_esp,'NO TIENE'),SUM(d.cantidad_2),isnull(b.precio_usd,k.precio),
a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.nombre_file_foto,b.nombre_file_ficha,b.nombre_file_ficha1,
b.cod_n,a.codid,b.descripcion_us,b.descripcion_user,b.precio,b.id_categoria,b.id_brand,b.id_familia,
b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online
FROM iptb00002 a LEFT OUTER JOIN iptb00016 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 ",
" LEFT OUTER JOIN iptb00001 k1 ON a.cod_n = k1.cod_n AND a.cod_grupo = k1.cod_grupo AND a.cod_tipo = k1.cod_tipo AND ",
" a.cod_Sec = k1.cod_sec ",
" LEFT OUTER JOIN vetb00025 k ON k.cod_n = a.cod_n AND k.cod_grupo = a.cod_grupo AND k.cod_tipo = a.cod_tipo AND
k.cod_sec = a.cod_Sec and k.ventas = '3' ",
" LEFT OUTER JOIN categorias c ON c.id_categoria = b.id_categoria ",
" LEFT OUTER JOIN iptb00006 d ON (d.cod_n = a.cod_n and d.cod_grupo = a.cod_grupo and d.cod_tipo = a.cod_tipo and d.cod_sec = a.cod_Sec) ",
" INNER JOIN intb00009 k2 ON k2.cod_bodega = d.bodega AND k2.control_existencia = 'SI' ",
" WHERE a.status_t IS NULL AND ",
" d.status_t is null AND ",
criterio CLIPPED,
" GROUP BY a.descrip_esp,a.unidad_med,c.descripcion_esp,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,
b.nombre_file_foto,b.nombre_file_ficha,b.foto,b.ficha_tecnica,b.cod_n,a.codid,b.descripcion_us,b.descripcion_user, ",
" b.precio,b.precio_usd,k.precio,b.nombre_file_ficha1,b.id_categoria,b.id_brand,b.id_familia,
b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online ",
" ORDER BY a.descrip_esp "
PREPARE comando FROM selec
DECLARE buscar CURSOR FOR comando
LET idx = 1
FOREACH buscar INTO arr_productos[idx].*
LET arr_productos[idx].codigo =arr_productos[idx].codn1 USING "&&&&","-",
arr_productos[idx].codgrupo1 USING "&&&&",'-',
arr_productos[idx].codtipo1 USING "&&&&&",'-',
arr_productos[idx].codsec1 USING "&&&&&"
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
RETURN "NO EXISTEN REGISTROS CON ESA CONDICION"
END IF
LET cantidadReg = arr_productos.getLength()
DISPLAY BY NAME cantidadReg
RETURN "EXITO"
END FUNCTION
FUNCTION refrescar()
LET selec = "select '',a.descrip_esp,a.unidad_med,ISNULL(c.descripcion_esp,'NO TIENE'),SUM(d.cantidad_2),isnull(b.precio_usd,k.precio),
a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,b.nombre_file_foto,b.nombre_file_ficha,b.nombre_file_ficha1,
b.cod_n,a.codid,b.descripcion_us,b.descripcion_user,b.precio,b.id_categoria,b.id_brand,b.id_familia,
b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online
FROM iptb00002 a LEFT OUTER JOIN iptb00016 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 ",
" LEFT OUTER JOIN iptb00001 k1 ON a.cod_n = k1.cod_n AND a.cod_grupo = k1.cod_grupo AND a.cod_tipo = k1.cod_tipo AND ",
" a.cod_Sec = k1.cod_sec ",
" LEFT OUTER JOIN vetb00025 k ON k.cod_n = a.cod_n AND k.cod_grupo = a.cod_grupo AND k.cod_tipo = a.cod_tipo AND
k.cod_sec = a.cod_Sec and k.ventas = '3' ",
" LEFT OUTER JOIN categorias c ON c.id_categoria = b.id_categoria ",
" LEFT OUTER JOIN iptb00006 d ON (d.cod_n = a.cod_n and d.cod_grupo = a.cod_grupo and d.cod_tipo = a.cod_tipo and d.cod_sec = a.cod_Sec) ",
" WHERE a.status_t IS NULL AND ",
" d.status_t is null AND ",
criterio CLIPPED,
" GROUP BY a.descrip_esp,a.unidad_med,c.descripcion_esp,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,
b.nombre_file_foto,b.nombre_file_ficha,b.foto,b.ficha_tecnica,b.cod_n,a.codid,b.descripcion_us,b.descripcion_user, ",
" b.precio,b.precio_usd,k.precio,b.nombre_file_ficha1,b.id_categoria,b.id_brand,b.id_familia,
b.ruta_file_ficha,b.ruta_file_ficha1,b.ruta_foto,b.factor_conv,b.online ",
" ORDER BY a.descrip_esp "
PREPARE comando1 FROM selec
DECLARE buscar1 CURSOR FOR comando1
LET idx = 1
FOREACH buscar1 INTO arr_productos[idx].*
LET arr_productos[idx].codigo =arr_productos[idx].codn1 USING "&&&&","-",
arr_productos[idx].codgrupo1 USING "&&&&",'-',
arr_productos[idx].codtipo1 USING "&&&&&",'-',
arr_productos[idx].codsec1 USING "&&&&&"
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION rutadefecto()
LET filedestino='e:\\imagenestienda\\'
LET fichadestino='e:\\imagenestienda\\'
LET fichadestino1='e:\\imagenestienda\\'
{ LET filedestino = 'C:\\Users\\jsoto\\Documents\\PROYECTOS\\BDL320\\IMAGENES'
LET fichadestino = 'C:\\Users\\jsoto\\Documents\\PROYECTOS\\BDL320\\IMAGENES'
LET fichadestino1 = 'C:\\Users\\jsoto\\Documents\\PROYECTOS\\BDL320\\IMAGENES'
}
LET url_ficha = 'https://ws.marmotech.com.do/imagenes/'
CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [tmpdir_file] )
END FUNCTION