IMPORT util IMPORT os FUNCTION productos(tipo_inventario) DEFINE xfecha_conteo DATE DEFINE tipo_inventario VARCHAR(50) DEFINE p RECORD productos DYNAMIC ARRAY OF RECORD codid INT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descripcion VARCHAR(100), unidad_med VARCHAR(4), factor_conv FLOAT, existencia DEC(12,5), consumo DEC(12,5), costo DEC(12,5), precio DEC(12,2), ordenes DEC(12,5), despachado DEC(12,5), disponible DEC(12,5), dias SMALLINT, fecha CHAR(10), fecha_conteo CHAR(10) END RECORD #, #existencia DYNAMIC ARRAY OF RECORD # codid INT, # bodega SMALLINT, # cantidad FLOAT, # fecha DATE #END RECORD END RECORD, r_foto DYNAMIC ARRAY OF RECORD foto STRING END RECORD, i int, selec,s1 STRING, fecha,fecha_ini DATE LET fecha = TODAY LET fecha_ini = fecha - 90 IF tipo_inventario = "productos" THEN SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI" LET selec = "SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,d.factor_conv,'0',", "'0', '0','0','0','0' ", " FROM iptb00002 a,iptb00001 d where a.status_t is null and ", " a.cod_n = d.cod_n and a.cod_grupo = d.cod_grupo and a.cod_tipo = d.cod_tipo and ", " a.cod_sec = d.cod_sec and ", "a.control_existencia='SI' " LET s1 = "SELECT a.codid,b.bodega,SUM(b.cantidad_2) FROM iptb00006 b,iptb00002 a 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 b.status_t is null ", " and ", "a.control_existencia='SI' ", " group by a.codid,b.bodega ", " having SUM(b.cantidad_2) > 0 " {"SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,d.factor_conv,SUM(b.cantidad_2),", "ISNULL((SELECT SUM(iptb00006.cantidad_2) FROM iptb00006 ", #CONSUMO PRODUCTO " WHERE a.cod_n = cod_n AND a.cod_grupo=cod_grupo AND a.cod_tipo = cod_tipo AND a.cod_sec = cod_sec AND ", " COD_MOV IN (30,31,55,56) and iptb00006.fecha between '",fecha_ini,"' and '",fecha,"' and status_t IS NULL ),0),", " ISNULL(c.material+c.gastos+c.labor,0),ISNULL(x7.precio,0),", " ISNULL((SELECT SUM(x1.cantidad) ", # CANTIDAD ORDENES " FROM prtb00013 x1,prtb00012 x2 ", " WHERE x1.num_oc = x2.num_oc AND ", " x2.cerrada = 'N' AND ", " x2.status_t IS NULL AND ", " (x1.cod_n = a.cod_n AND ", " x1.cod_grupo=a.cod_grupo AND ", " x1.cod_tipo=a.cod_tipo AND ", " x1.cod_sec=a.cod_sec ) ", " ),0), ", " ISNULL(( SELECT SUM(x5.cantidad_2) ", # DESPACHADO " FROM prtb00013 x3,prtb00012 x4,iptb00006 x5,iptb00005 x6 ", " WHERE (x3.num_oc = x4.num_oc) AND ", " x4.cerrada = 'N' AND ", " x4.status_t IS NULL AND ", " (x3.cod_n = a.cod_n AND ", " x3.cod_grupo=a.cod_grupo AND ", " x3.cod_tipo=a.cod_tipo AND ", " x3.cod_sec=a.cod_sec) AND ", " (x3.cod_n = x5.cod_n AND ", " x3.cod_grupo=x5.cod_grupo AND ", " x3.cod_tipo=x5.cod_tipo AND ", " x3.cod_sec=x5.cod_Sec) AND ", " x5.cod_mov = x6.cod_mov AND ", " (x6.control_despacho = 'SI' OR x6.control_devolucion = 'SI') AND ", " x3.num_oc = x5.num_oc AND ", " x5.status_t IS NULL ", "),0),a.foto_producto ", " FROM iptb00002 a LEFT OUTER JOIN vetb00025 x7 ON ", " (a.cod_n = x7.cod_n AND ", " a.cod_grupo = x7.cod_grupo AND ", " a.cod_tipo = x7.cod_tipo AND ", " a.cod_Sec = x7.cod_Sec) AND ", " x7.ventas = '3' ", " INNER JOIN iptb00001 d ON ", " (a.cod_n = d.cod_n AND ", " a.cod_grupo = d.cod_grupo AND ", " a.cod_tipo = d.cod_tipo AND ", " a.cod_Sec = d.cod_Sec) ", " ,iptb00006 b left OUTER JOIN iptb00004 c ON ", " (b.cod_n = c.cod_n AND ", " b.cod_grupo = c.cod_grupo AND ", " b.cod_tipo = c.cod_tipo AND ", " b.cod_sec = c.cod_sec AND ", " c.ano =", year(fecha),") ", " 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 ", " b.status_t IS NULL AND ", " a.status_t IS NULL ", " GROUP BY d.factor_conv,a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.unidad_med,c.material,c.gastos,c.labor,a.descrip_esp,x7.precio,a.foto_producto " } END IF IF tipo_inventario = "materia_prima" THEN SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI" LET selec = "SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,'1','0','0',", " '0','0',' ' ", " FROM intb00001 a where a.status_t is null " LET s1 = "SELECT a.codid,b.bodega,SUM(b.cantidad_2) FROM intb00006 b,intb00001 a 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 b.status_t is null", " group by a.codid,b.bodega ", " having SUM(b.cantidad_2) > 0 " DISPLAY "TIPO INVENTARIO ",tipo_inventario END IF IF tipo_inventario = "repuestos" THEN SELECT a.fecha_conteo INTO xfecha_conteo FROM intb00044 a WHERE a.tipo_inventario = tipo_inventario AND a.disponible = "SI" LET selec = "SELECT a.codid,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.descrip_esp,a.unidad_med,'1','0','0',", " '0','0',' ' ", " FROM irtb00002 a where a.status_t is null " LET s1 = "SELECT a.codid,b.bodega,SUM(b.cantidad_2) FROM irtb00006 b,irtb00002 a 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 b.status_t is null", " group by a.codid,b.bodega ", " having SUM(b.cantidad_2) > 0 " END IF PREPARE comando FROM selec DECLARE c2 CURSOR FOR comando LET i = 1 FOREACH c2 INTO p.productos[i].* IF p.productos[i].codid IS NOT NULL THEN LET p.productos[i].costo=0 LET p.productos[i].disponible = p.productos[i].existencia - (p.productos[i].ordenes+p.productos[i].despachado) IF p.productos[i].consumo < 0 THEN LET p.productos[i].consumo = p.productos[i].consumo * -1 END IF IF p.productos[i].consumo > 0 THEN LET p.productos[i].dias =(p.productos[i].disponible/ p.productos[i].consumo) * 90 ELSE LET p.productos[i].dias=0 END IF IF p.productos[i].descripcion IS NULL THEN LET p.productos[i].descripcion = "NO TIENE" END IF IF p.productos[i].unidad_med IS NULL THEN LET p.productos[i].unidad_med='UD' END if # IF pproductos[i].fullpath IS NOT NULL THEN # IF os.path.exists(producto.fullpath) THEN # LET producto.nombre_file=os.Path.basename(producto.fullpath) # LET producto.nombre_file=producto.nombre_file CLIPPED # CALL producto.foto.readFile(producto.fullpath) # END IF # END IF # CALL fotos(producto.fullpath) RETURNING s1 LET p.productos[i].fecha=TODAY USING "dd/mm/yyyy" # LET p.r_foto[i].foto = s1 # IF p.existencia[i].cantidad IS NULL THEN # LET p.existencia[i].cantidad=0 # END IF LET p.productos[i].fecha_conteo = xfecha_conteo LET i = i + 1 END IF END FOREACH DISPLAY "productos ",p.productos.getLength() LET i = 1 #PREPARE comando2 FROM s1 #DECLARE c3 CURSOR FOR comando2 #FOREACH c3 INTO p.existencia[i].* # LET i = i+1 # END FOREACH RETURN util.JSON.stringify(p) END FUNCTION FUNCTION fotos(fullpath) DEFINE filename, s STRING, fullpath VARCHAR(100) DEFINE r_photo RECORD i BYTE END RECORD # primero asignar la variable fullpath con el nombre mas el path-default o como sea en tu caso #CALL os.path.join(images_cat_path CLIPPED,pname) RETURNING fullpath # después dependiendo de si el archivo existe o no armar el string para enviar al cliente IF os.path.exists(fullpath) THEN LOCATE r_photo.i IN MEMORY CALL r_photo.i.readFile(fullpath) LET s=util.JSON.stringify(r_photo) FREE r_photo.i ELSE LET s="FILE_NOT_FOUND" END IF RETURN s END FUNCTION