GLOBALS "inprgb000.4gl" DEFINE xcodigo VARCHAR(50) DEFINE despiece1 DYNAMIC ARRAY OF RECORD id_etiqueta SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, lado_1 DEC(12,5), lado_2 DEC(12,5), lado_3 DEC(12,5), cantidad DEC(12,5), medida DEC(12,5), secuencia,id_despiece INT, bodega SMALLINT END RECORD DEFINE vendedor VARCHAR(100) FUNCTION impdocumentos_prima(numeroid,codmov) DEFINE numeroid,codmov INT CALL buscadoc(numeroid,codmov) LET r_filename = "inprmt020.4rp" iF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file LET r_output="PDF" LET preview=1 CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes ELSE RETURN END IF START REPORT requiere TO XML HANDLER HANDLER FOR idx = 1 TO arr_intb58.getLength() IF arr_intb58[idx].cod_Sec IS NOT NULL THEN LET xcodigo =arr_intb58[idx].cod_n USING '&&&&&','-', arr_intb58[idx].cod_grupo USING '&&&&&','-', arr_intb58[idx].cod_tipo USING '&&&&&&','-', arr_intb58[idx].cod_sec USING '&&&&&&&' DISPLAY arr_intb58[idx].* DISPLAY xcodigo OUTPUT TO REPORT requiere(arr_intb58[idx].*,despiece[idx].*, xcodigo) END IF END FOR FINISH REPORT requiere LET tienedespiece = FALSE END FUNCTION REPORT requiere(detalle,xdespiece,codigo) DEFINE hora STRING, detalle RECORD area INT, cod_n,cod_grupo,cod_tipo,cod_sec INT, descripcion VARCHAR(100), unidad_med VARCHAR(4), cantidad_1,cantidad,cantidad_o1,cantidad1,factor_conv DEC(12,5) END RECORD, xdespiece RECORD id_etiqueta SMALLINT, cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, lado_1 DEC(12,5), lado_2 DEC(12,5), lado_3 DEC(12,5), cantidad DEC(12,5), medida DEC(12,5), secuencia,id_despiece INT, bodega SMALLINT END RECORD, codigo VARCHAR(50), x INT, etiqueta VARCHAR(100) ORDER BY codigo FORMAT FIRST PAGE HEADER SELECT a.nombre INTO p_companias.nombre FROM companias a LET hora = CURRENT PRINTX hora,p_companias.nombre BEFORE GROUP OF codigo PRINTX detalle.*,p_intb57.*, nombreMov,nombreBodega,nombreBodegaDestino,nombreUsuario ON EVERY ROW SELECT a.descripcion INTO etiqueta FROM vetb00026 a WHERE a.codid = xdespiece.id_etiqueta LET total_cantidad = total_cantidad + xdespiece.cantidad PRINTX codigo,xdespiece.*,tienedespiece,etiqueta,total_cantidad,total_medida END REPORT FUNCTION buscadoc(numid,codmov) DEFINE numid,codmov INT LET vendedor = null SELECT a.numero_Doc,a.cod_mov,a.fecha,a.num_oc,a.tipo_cliente,a.sec_cliente,a.nombre,a.bodega,a.bodega_destino, a.estado,a.url_destino,a.observacion,b.descrip_mov,c.descripcion, '('||ISNULL(CAST(f.num_emp AS VARCHAR(10)),' ')||')'||ISNULL(rtrim(f.nom1_emp),' ')||' '||ISNULL(f.apell1_emp,' ') INTO p_intb57.numero_doc,p_intb57.cod_mov,p_intb57.fecha,p_intb57.num_oc,p_intb57.tipo_cliente,p_intb57.sec_cliente, p_intb57.cliente,p_intb57.bodega,p_intb57.bodega_destino,p_intb57.estado, p_intb57.url_file,p_intb57.observacion,nombreMov,nombreBodega,vendedor FROM intb00057 a INNER JOIN intb00005 b ON b.cod_mov = a.cod_mov INNER JOIN intb00009 c ON c.cod_bodega = a.bodega LEFT OUTER JOIN prtb00012 d ON d.num_oc = a.num_oc LEFT OUTER JOIN adtb00003 f ON f.num_emp = d.sec_vend WHERE a.numero_doc = numid AND a.cod_mov = codmov #BODEGA DESTINO IF p_intb57.bodega_destino IS NOT NULL THEN SELECT a.descripcion INTO nombreBodegaDestino FROM intb00009 a WHERE a.cod_bodega = p_intb57.bodega_destino END IF DECLARE buscardetalle CURSOR FOR SELECT a.area,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descripcion,a.unidad_med, a.cantidad_1,a.cantidad_2, c.id_etiqueta, c.lado_1,c.lado_2,c.lado_3,c.cantidad,c.medida FROM intb00058 a LEFT OUTER JOIN intb00060 c ON c.cod_n =a.cod_n AND c.cod_grupo = a.cod_grupo AND c.cod_tipo = a.cod_tipo AND c.cod_sec = a.cod_Sec AND c.id_despiece = a.numero_Doc WHERE a.numero_Doc = numid AND a.cod_mov = codmov LET idx = 1 CALL arr_intb58.clear() LET tienedespiece = FALSE FOREACH buscardetalle INTO 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, #arr_intb58[idx].factor_conv, despiece1[idx].id_etiqueta, despiece1[idx].lado_1, despiece1[idx].lado_2, despiece1[idx].lado_3, despiece1[idx].cantidad, despiece1[idx].medida IF despiece1[idx].cantidad > 0 THEN LET tienedespiece = TRUE ELSE LET tienedespiece = FALSE END IF LET idx = idx + 1 END FOREACH END FUNCTION