Compare commits

..
30 Commits
Author SHA1 Message Date
jpegueroandClaude Sonnet 5 bb9d9a05a1 Corregir ipprmt017: columnas sin titulo, toolbar incompleto y checkbox Elimina
- Agregar titulo a columnas Unidad y Moneda, ocultar campo interno idrow
- Agregar a ToolBar1 los botones Busca Informacion, Limpia Screen,
  Conversion Moneda y Cancela operacion (estaban definidos como
  ActionDefault pero nunca agregados a la barra, por eso no se veian)
- Capturar el idrow generado al insertar un precio nuevo (antes quedaba
  NULL en memoria, rompiendo el eliminar de esa misma fila en la misma
  sesion)
- Corregir el checkbox "Elimina": el clic con mouse marcaba la casilla
  visualmente pero no actualizaba el valor real hasta perder el foco con
  Tab (bug de renderizado de GST). Se cambio el trigger de AFTER FIELD a
  ON CHANGE, que si sincroniza el valor de inmediato con clic de mouse

Pendiente: falta la prueba final completa del flujo eliminar en
ipprmt017 (se hizo hasta confirmar que ON CHANGE captura el valor
correctamente, falta probar el guardado + verificacion en BD)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 17:00:17 -04:00
jpegueroandClaude Sonnet 5 866778edfe Avanzar en registro y correccion de ipprmt017 (Precio por Cliente)
- Registrar ipfmmt017.4fd e ipfmwd008.per (faltaban)
- Corregir esquema viejo "marmotech" -> "smarmotech" en ipfmwd008.per
- Copiar vefmwd002.4fd a ipdir (renombrado vefmwd002_ip.4fd) para evitar
  depender de la libreria FORMULARIOS_PR (de Compras), que tiene errores
  propios sin relacion (prfmmt006.4fd con columna inexistente,
  prfmwd014.per con problema estructural) que bloqueaban la compilacion
- Corregir 3 columnas de la lista de precios sin titulo (idrow, unidadmed,
  moneda): idrow se oculta (es un campo interno), unidadmed y moneda
  reciben titulo visible

Pendiente: falta recompilar y probar el flujo completo (alta, consulta,
eliminacion) de ipprmt017.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 13:23:21 -04:00
jpegueroandClaude Sonnet 5 4ce1e7a03d Registrar y corregir ipprmt014 (Administracion Medidas)
- Registrar formulario ipfmmt014.per (faltaba)
- Corregir refresco de pantalla al eliminar (no mostraba estado 'E' hasta
  volver a consultar), confirmado por Johnny que debe verse al instante
- Agregar validacion para no permitir eliminar un registro ya eliminado
  (mostraba "REGISTRO ELIMINADO" de nuevo sin avisar)

Nota: el aviso de "ya eliminado" no sale centrado en pantalla - limitacion
del cliente grafico de Genero para dialogos lanzados desde pantallas tipo
MENU clasico (no aplica en pantallas DIALOG modernas). Aceptado por la
usuaria, no es bloqueante.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 12:28:56 -04:00
jpeguero f163516115 Merge branch 'main' of https://git.fulldetord.com/jsoto/mbs 2026-09-11 11:55:22 -04:00
jpegueroandClaude Sonnet 5 1ed4e0e691 Corregir ipprmt010: campos de usuario/fecha/estado enlazados a tabla equivocada
- El formulario ipfmmt010.per tenia los campos Usuario Creador/Modificador,
  Fecha Creacion/Modificacion y el indicador de estado enlazados a
  iptb00020 (tabla de Grupos, ajena a este programa) en vez de iptb00024
  (Tipos de Productos) - copiado por error del formulario de otro programa
- La consulta en ipprmt010.4gl tampoco seleccionaba esas columnas
- Al eliminar, el registro en memoria y la pantalla no se actualizaban con
  el nuevo estado, solo la base de datos

Confirmado por Johnny que el estado 'E' debe reflejarse en pantalla al
eliminar.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 11:48:59 -04:00
jpegueroandClaude Sonnet 5 189c582eee Registrar formulario ipfmmt010.per para ipprmt010 (Tipos de Productos)
Probado completo: alta, consulta-modificacion y eliminacion (confirmado
en BD que status_t queda en 'E') - todo funciona correctamente.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 11:38:45 -04:00
jpegueroandClaude Sonnet 5 ecdd770632 Registrar formulario ipfmmt012.per para ipprmt012 (Administracion Grupos)
Probado completo: alta, consulta-modificacion y eliminacion - todo
funciona correctamente.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 10:29:39 -04:00
jpegueroandClaude Sonnet 5 7915a27efe Agregar mapeo de conexion marmotech -> EXTERIOR en fglprofile
Autorizado por Johnny Soto: crear DSN ODBC apuntando a la base EXTERIOR
para la segunda conexion legada de Informix usada en ipprmt064/ipprmt005.

Investigacion: la conexion aislada a EXTERIOR funciona correctamente,
pero abrir esta segunda conexion junto con la conexion activa a
smarmotech falla con error -6366 "Changed database context" del driver
dbmsnc de Genero. Se descarto: colision de nombre de DSN, pooling de
conexiones ODBC, y version del driver (probados ODBC Driver 18 y el
driver "SQL Server" legado) - mismo resultado en todos los casos.
Parece ser una limitacion del driver de Genero al manejar dos conexiones
simultaneas al mismo servidor SQL Server. Escalado a Johnny para abrir
caso con soporte de Four Js.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 10:05:22 -04:00
Abel López 79eff57d70 Merge branch 'main' of https://git.fulldetord.com/jsoto/mbs 2026-09-10 17:02:44 -04:00
Abel LópezandClaude Sonnet 5 9ac3f70a13 WIP: Agregar noprmt008 (Generacion de Nomina) - en diagnostico
- Registrar noprmt008 en mbsERP.4pw junto con sus 3 formularios
  (nofmmt008.4fd, nofmmt108.per, nofmmt208.per)
- Corregir bug en nofmmt008.4fd: el checkbox opt3 tenia colName="opt2"
  duplicado por error de copiar/pegar, causando "Field (opt3) not
  found in form"
- Quitar CONVERT(CHAR(10),...,103) en 5 SELECTs que alimentaban
  variables DATE (mismo patron de bug ya visto en noprmt003):
  causaba "-1205 Invalid month in date" de forma intermitente
- Agregar funcion debuglog() (escribe a archivo en FGLSPOOL) para
  diagnosticar por que la generacion terminaba sin insertar ningun
  registro; diagnostico aun en curso

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-10 17:02:39 -04:00
jpeguero 972f2f1f47 Registrar formularios y funciones faltantes para ipprmt005 y ipprmt013
- Registrar ipfmmt019.4fd (formulario real que usa ipprmt005.4gl)
- Migrar categorias.4gl desde PROYECTOS y registrarlo (usaba
  formonly.cod_cat, coincide con ipprmt005; la copia existente en
  PUNTO VENTAS VER2 usaba un nombre de campo distinto)

Pendiente: ipprmt005 (como ipprmt064) requiere una segunda conexion a una
base "marmotech" (alias IFMX) no mapeada en el ambiente, resto de la
epoca Informix. Consultado con Johnny como patron general.
2026-09-10 16:52:45 -04:00
jpeguero d43f2729bd Registrar y corregir ipprmt013 (Costos Estandares Producto Terminado)
- Registrar formulario ipfmmt013.4fd en el proyecto (faltaba)
- Corregir databaseName del formulario (marmotech -> smarmotech, esquema
  viejo que impedia resolver la tabla iptb00004)
- Agregar titulo de ventana (formulario no tenia atributo text, mostraba
  "screen" generico)
2026-09-10 16:42:48 -04:00
jpeguero 987c2c1122 Avanzar en registro y correccion de ipprmt044 (Productos Terminados)
- Registrar 8 archivos faltantes en FUNCIONES_IP (ipautorizareq, codigoModificacion,
  piking, conduces, ubicacionH, ipactualizareqtrx, loadDespiece, LlenarUbicaciones)
- Agregar dependencias FUNCIONESREPORT y FUNCIONESEMAIL a ipprmt044 (defecto,
  configureOutput, enviaemail ya existian en el proyecto)
- Resolver colision de nombres: renombrar REPORT/FUNCTION duplicados en
  ipautorizareq.4gl (requiere->requiereAutoriza, buscadoc->buscadocAutoriza,
  impdocumento->impdocumentoAutoriza) que chocaban con imprequisiciones.4gl
  y buscarequisicion.4gl
- Sincronizar registros locales desactualizados: x RECORD en ipautorizareq.4gl
  (faltaba us_crea) y x/z RECORD del REPORT formu4 en ipprgb000.4gl (faltaban
  bodega_destino, factura, area, descripcion_area, existencia, disponible,
  codigo_bloque, id_kit) respecto a los registros globales reales
- Migrar ipprmt020_1.4rp desde PROYECTOS y corregir su RWFglReportName

Pendiente: funcion 'fotos' (12 parametros) no existe en ningun archivo del
proyecto, consultado con Johnny
2026-09-10 14:15:49 -04:00
jpeguero e414e52523 Registrar y corregir ipprmt021 (Autorizaciones Requisiciones Almacenes)
- Registrar estadosprocesos.4gl y formulario ipfmmt021.4fd en el proyecto
- Corregir columna estado_proceso inexistente por idestado (error SQL -6372)
- Corregir desfase de columnas en SELECT/INTO de buscadoc() que dejaba
  usuario, bodega origen y tipo de movimiento vacios en el reporte impreso,
  y filtraba la descripcion del estado hacia el campo de observacion
2026-09-10 13:03:01 -04:00
jpeguero a3e88776a9 Registrar y corregir ipprmt020 (Requisiciones Productos Almacenes)
- Registrar funciones compartidas faltantes (buscarequisicion, imprequisiciones, funciones_ip) y formularios ipfmmt003/ipfmmt020 en el proyecto
- Agregar usuarioSistema a seg000.4gl
- Ampliar combos Codigo Mov/Bodega/Bodega Destino en ipfmmt020.4fd (texto ilegible)
- Refrescar lista de requisiciones al anular (buscarData + clear del arreglo)
2026-09-09 16:30:34 -04:00
jpeguero 9e70c46451 Merge branch 'main' of http://192.168.40.251:3000/jsoto/MBS 2026-09-05 12:03:31 -04:00
jpegueroandClaude Sonnet 5 adf5224440 Agrega ipprmt003 (Productos Terminados) y actualiza esquema de BD
- Registra formulario ipfmmt003 en FORMULARIOS_IP con dependencia a
  Database
- Corrige dos bugs reales en ipprmt003.4gl: campo
  control_ubicacion_almacen duplicado en INPUT BY NAME (error -8090),
  y columnas control_produccion/control_ubicacion_almacen duplicadas
  en el INSERT INTO (error SQL -6372). Probado completo: alta,
  consulta, eliminacion, validacion de duplicados
- Actualiza DATABASE/smarmotech.4db con el esquema actual de SQL
  Server (agrega columnas nuevas de iptb00002 y otras tablas)
- ipprmt002 queda pendiente: 5 columnas de iptb00002 no son
  reconocidas por el compilador pese a existir en la BD real,
  requiere revision en vivo con Johnny

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 12:03:13 -04:00
Abel López 888a36553e Merge branch 'main' of http://192.168.40.251:3000/jsoto/MBS 2026-09-04 16:48:33 -04:00
Abel López 97ef961e13 Revert "Agregar noprmt020 al proyecto (identidad real pendiente de confirmar)"
This reverts commit 77e844390e.
2026-09-04 16:46:09 -04:00
Abel LópezandClaude Sonnet 5 77e844390e Agregar noprmt020 al proyecto (identidad real pendiente de confirmar)
- Registrar noprmt020 en mbsERP.4pw
- Agregar MAIN (faltaba, el archivo era solo funciones para ser
  llamadas desde el menu nomnmt000.4gl) y una funcion pantalla()
  local para el encabezado
- Corregir typo "database marmotech" -> "smarmotech" en nofmmt021.per

NOTA: el usuario identifico este programa como "Calcular Horas
Extras", pero tanto el contenido del .4gl como su propio menu
(nomnmt000.4gl: "19-Porc. Accidente Trabajo noprmt020") indican que
en realidad es la maestra de % de Accidente de Trabajo. Build y
compilacion verificados, prueba funcional pendiente hasta confirmar
el programa correcto para "Calcular Horas Extras" (candidatos:
noprmt030.4gl, noprmt038.4gl, o los reportes noprrp007/011/018/026/034/035).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 16:22:45 -04:00
Abel LópezandClaude Sonnet 5 81182e5ded Agregar noprmt007 (Novedades de la Nomina) al modulo NOMINA
Registrar noprmt007 en mbsERP.4pw usando nofmmt007.4fd (el .per
carece de departamento_afecta, num_trx, sueldo_act y los campos
titulo_dep_act/titulo_dep_afecta que usa el programa). El .4gl
compilo limpio sin cambios de codigo.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 13:45:56 -04:00
Abel LópezandClaude Sonnet 5 60e392c033 Agregar noprmt001 (Codigos de Movimientos) al modulo NOMINA
- Registrar noprmt001 en mbsERP.4pw (usa cofmmt001... nofmmt001.4fd,
  el .per carece del grid smovimientos y los campos modifica/vacaciones)
- Reemplazar smarmotech.sch/.42d de nodir por la copia canonica ya
  generada en MBS/DATABASE (orden de columnas correcto, incluye
  telefonoCorporativo/numeroOficina/extension) en vez de regenerar

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 12:12:24 -04:00
jpegueroandClaude Sonnet 5 367f0c4340 Agrega los 34 programas de Productos Terminados al proyecto
Registra las Applications de Productos Terminados (ipprmt/ipprcs/ipprrp)
con dependencias a FUNCIONES_IP, Database y FUNCIONES, y agrega
ipprgb000.4gl como archivo compartido de FUNCIONES_IP. Listo para
compilar/probar programa por programa, igual que se hizo con Materia
Prima.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 09:39:19 -04:00
jpeguero 43aa1c809d Merge branch 'main' of http://192.168.40.251:3000/jsoto/MBS 2026-09-04 09:31:18 -04:00
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
Abel López affc09c3e8 Merge branch 'main' of http://192.168.40.251:3000/jsoto/MBS 2026-09-03 16:57:12 -04:00
jpegueroandClaude Sonnet 5 4532d51e4b Prueba inprrp011 (completo) e inprrp028 (matricial completo, PDF pendiente)
- Corrige selectOutput()/seleccionarSalida()/configureOutput() en
  defecto.4gl para usar la API real fgl_report_* (Report Writer 2.0),
  reemplazando los stubs previos. Reutiliza el formulario Configuration
  ya existente en el proyecto (FUNCIONESREPORT)
- inprrp011: quita el START REPORT forzado a XML roto (media migracion
  abandonada), probado completo: filtros, totales/subtotales vs
  produccion, exportacion PDF/Excel/Pantalla funcionando
- inprrp028: mismo patron, restaura Sietesalida) - No/matricial
  como respaldo. Crea bin/inprrp028.4rp (diseno de reporte, no existia)
  para la salida grafica; carga sin error de formato pero la
  generacion no completa en este entorno - pendiente de revisar
  rendimiento/recursos

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 16:52:39 -04:00
Abel LópezandClaude Sonnet 5 ee27da0669 Agregar noprmt003 (Maestra de Empleados) al modulo NOMINA
- Registrar noprmt003 en mbsERP.4pw (FUNCIONES_NO: noprfu000.4gl,
  nocarnet.4gl; FORMULARIOS_NO: nofmmt003.4fd); reutiliza
  otrodir/departamentos.4gl ya presente en FUNCIONES
- Actualizar el diccionario de esquema smarmotech.sch: faltaban las
  columnas telefonoCorporativo/numeroOficina/extension de adtb00003
  (existen en la BD real pero no estaban en el diccionario, .42d se
  regenera solo al recompilar); propagado a todos los directorios
- Desactivar el CONNECT TO "marmotech" AS "IFMX" (Informix ya no
  existe, todo migro a SQL Server) y el INSERT duplicado hacia esa
  conexion en el alta de empleados; sin esto el programa se colgaba
  al iniciar
- Quitar CONVERT(...,103) de fechas en el SELECT/FETCH de empleados:
  se convertian a texto dd/mm/yyyy y luego se reasignaban a variables
  DATE, causando "-1205 Invalid month in date" con dias > 12
- Agregar BEFORE CONSTRUCT/END CONSTRUCT para poblar el combo de
  Departamento en la busqueda (faltaba, quedaba vacio)
- Corregir foto de empleado que no se limpiaba al navegar
  Siguiente/Anterior hacia un empleado sin foto
- nocarnet.4gl: sustituir fgl_report_* (API no disponible) por
  om.XmlWriter.createFileWriter() hacia FGLSPOOL

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 16:51:11 -04:00
Abel LópezandClaude Sonnet 5 b27b20d42d Agregar noprmt002 (Movimientos Fijos Emp.) al modulo NOMINA
- Registrar noprmt002 en mbsERP.4pw junto con noprgb000.4gl
  (FUNCIONES_NO), nofmmt002.per/nofmwd001.per (FORMULARIOS_NO) y
  adfmwd004.per (FORMULARIOS_AD, compartido con ADMINISTRACION)
- Copiar el diccionario de esquema smarmotech.sch a nodir/addir
  (faltaba, igual que en otros directorios ya corregidos)
- Corregir typo "database marmotech" -> "smarmotech" en nofmwd001.per

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-03 12:12:06 -04:00
jsoto 382ec5cd35 JSOTO Se adiciono programa adprmt017 2026-09-03 10:12:37 -04:00
386 changed files with 57673 additions and 6166 deletions
File diff suppressed because one or more lines are too long
+3
View File
@@ -1619,6 +1619,9 @@ FUNCTION desplegar()
IF acc_per.estado_civil = "C" THEN
LET estado = "CASADO"
END IF
IF acc_per.estado_civil = "U" THEN
LET estado = "UNION LIBRE"
END IF
IF acc_per.sexo = "M" THEN
LET tipo_sexo = "MASCULINO"
File diff suppressed because it is too large Load Diff
+57
View File
@@ -0,0 +1,57 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="60003" version="7.00">
<report:Settings RWPageWidth="tabloidlength" RWPageLength="tabloidwidth" RWLeftMargin="0.5cm" RWTopMargin="0.5cm" RWRightMargin="0.5cm" RWBottomMargin="0.5cm">
<report:FormatList>
<report:Format-PDF/>
<report:Format-image/>
<report:Format-SVG/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../indir/inprrp028.rdd" RWFglReportName="prt_exist"/>
<report:Conflicts/>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report">
<MINIPAGE name="MiniPage1" width="max" length="max" fontName="Arial" fontSize="8">
<LAYOUTNODE name="HeaderNode" width="min" length="min" swapX="true" port="anyPageHeader">
<MINIPAGE name="HeaderStripe" width="min" length="max" alignment="center" layoutDirection="topToBottom">
<WORDBOX name="WB1" alignment="baseline" fontBold="true" fontSize="12" text="MARMOTECH, S. A."/>
<WORDBOX name="WB2" alignment="baseline" text="Sistema de Inventario de Materia Prima"/>
<WORDBOX name="WB3" alignment="baseline" fontBold="true" text="Existencia con Entrada y Salida"/>
</MINIPAGE>
<LAYOUTNODE name="ColHeader" width="max" length="min" bgColor="#cccccc" fontBold="true" layoutDirection="leftToRight">
<WORDBOX name="WBc1" width="3cm" alignment="baseline" text="Codigo"/>
<WORDWRAPBOX name="WBc2" width="6cm" alignment="baseline" text="Descripcion"/>
<WORDBOX name="WBc3" width="1.5cm" alignment="baseline" text="Unidad"/>
<WORDBOX name="WBc4" width="2.5cm" alignment="baseline" textAlignment="right" text="Existencia Ant."/>
<WORDBOX name="WBc5" width="2.5cm" alignment="baseline" textAlignment="right" text="Entradas"/>
<WORDBOX name="WBc6" width="2.5cm" alignment="baseline" textAlignment="right" text="Salidas"/>
<WORDBOX name="WBc7" width="2.5cm" alignment="baseline" textAlignment="right" text="Existencia Act."/>
</LAYOUTNODE>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<LAYOUTNODE name="RowNode" width="max" length="min" layoutDirection="leftToRight">
<rtl:input-variable name="x.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_grupo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_tipo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="x.cod_sec" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WBcodigo" width="3cm" alignment="baseline" text="{{x.cod_n.format(&quot;&amp;&quot;)+&quot;-&quot;+x.cod_grupo.format(&quot;&amp;&quot;)+&quot;-&quot;+x.cod_tipo.format(&quot;&amp;&amp;&quot;)+&quot;-&quot;+x.cod_sec.format(&quot;&amp;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="x.descrip_esp" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WBdesc" width="6cm" alignment="baseline" text="{{x.descrip_esp.trim()}}"/>
<rtl:input-variable name="x.unidad_med" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WBund" width="1.5cm" alignment="baseline" text="{{x.unidad_med.trim()}}"/>
<rtl:input-variable name="x.existe_ant" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBant" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{x.existe_ant}}"/>
<rtl:input-variable name="entradas" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBent" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{entradas}}"/>
<rtl:input-variable name="salidas" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBsal" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{salidas}}"/>
<rtl:input-variable name="x.existe_act" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="WBact" width="2.5cm" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---.&amp;&amp;" value="{{x.existe_act}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+120
View File
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5inch" RWTopMargin="0.5inch" RWRightMargin="0.5inch" RWBottomMargin="0.5inch">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../ipdir/imprequisiciones.rdd" RWFglReportName="requiere"/>
<report:Conflicts>
<report:Conflict nodeName="despiece" message="Node was in trigger &quot;AfterGroup codigo&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="detalledespiece" message="Node was in trigger &quot;AfterGroup codigo&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="totaldespiece" message="Node was in trigger &quot;AfterGroup codigo&quot;, but trigger was removed during schema update"/>
</report:Conflicts>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="Page Root" width="max" length="max">
<LAYOUTNODE name="encabezado" width="min" length="max" alignment="center" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox1" width="max-2cm" floatingBehavior="enclosed" textAlignment="center" text="{{p_companias.nombre}}"/>
<WORDBOX name="WordBox" floatingBehavior="enclosed" text="Pagina:"/>
<PAGENOBOX name="PageNoBox" floatingBehavior="enclosed"/>
</LAYOUTNODE>
<LAYOUTNODE name="encabezado2" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox2" width="max-2cm" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="REQUISICION DOCUMENTOS"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedAhead"/>
<WORDBOX name="WordBox3" floatingBehavior="enclosed" text="{{hora}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="encabezadomaster" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode1" width="3inch" length="min" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="nombreUsuario" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDBOX name="WordBox4" length="1cm" floatingBehavior="enclosed" text="{{&quot;USUARIO: &quot;+nombreUsuario.trim()}}"/>
<rtl:input-variable name="p_iptb57.numero_doc" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
<WORDBOX name="WordBox5" fontSize="12" fontBold="true" floatingBehavior="enclosed" text="{{&quot;DOCUMENTO: &quot;+p_iptb57.numero_doc.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="p_iptb57.cod_mov" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
<rtl:input-variable name="nombreMov" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDWRAPBOX name="WordWrapBox" width="width(&quot;M&quot;)*27" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;TIPO DOCUMENTO: &quot;+&quot;(&quot;+p_iptb57.cod_mov.format(&quot;&lt;&lt;&lt;&quot;)+&quot;)&quot;+nombreMov.trim()}}"/>
<rtl:input-variable name="p_iptb57.fecha" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDBOX name="WordBox6" floatingBehavior="enclosed" text="{{&quot;FECHA: &quot;+p_iptb57.fecha}}"/>
<rtl:input-variable name="nombreBodega" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDBOX name="WordBox8" floatingBehavior="enclosed" text="{{&quot;BODEGA: &quot;+nombreBodega}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode2" width="3inch" length="min" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox12" length="1cm" alignment="baseline" floatingBehavior="enclosed"/>
<rtl:input-variable name="p_iptb57.bodega_destino" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
<rtl:input-variable name="nombreBodegaDestino" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDBOX name="WordBox9" floatingBehavior="enclosed" text="{{&quot;BODEGA DESTINO: &quot;+&quot;(&quot;+p_iptb57.bodega_destino+&quot;)&quot;+nombreBodegaDestino}}"/>
<rtl:input-variable name="p_iptb57.num_oc" type="FGLNumeric" expectedLocation="expectedWayAhead"/>
<WORDBOX name="WordBox10" floatingBehavior="enclosed" text="{{&quot;NUMERO ORDEN:&quot;+p_iptb57.num_oc.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="p_iptb57.cliente" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDWRAPBOX name="WordWrapBox1" width="width(&quot;M&quot;)*27" floatingBehavior="enclosed" text="{{&quot;CLIENTE: &quot;+p_iptb57.cliente}}"/>
<rtl:input-variable name="p_iptb57.observacion" type="FGLString" expectedLocation="expectedWayAhead"/>
<WORDWRAPBOX name="WordWrapBox2" width="width(&quot;M&quot;)*20" floatingBehavior="enclosed" text="{{&quot;OBSERVACION: &quot;+p_iptb57.observacion.trim()}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
<LAYOUTNODE name="encabezadodetalle" width="min" length="min" fontSize="8" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox13" width="3.5inch" floatingBehavior="enclosed" text="ITEM(S)" roundedCorners="false" borderWidth="1"/>
<WORDBOX name="WordBox14" width="2.2inch" floatingBehavior="enclosed" textAlignment="right" text="UNIDAD"/>
<WORDBOX name="WordBox15" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="CANTIDAD"/>
</LAYOUTNODE>
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1"/>
<rtl:match name="Group codigo" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="table" width="min" length="min" fontSize="8" layoutDirection="leftToRight">
<rtl:input-variable name="detalle.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.cod_grupo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.cod_tipo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.cod_sec" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.descripcion" type="FGLString" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.unidad_med" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox3" width="width(&quot;M&quot;)*30" length="min" alignment="baseline" floatingBehavior="enclosed" text="{{detalle.cod_n.format(&quot;&amp;&amp;&amp;&amp;&quot;)+&quot;-&quot;+detalle.cod_grupo.format(&quot;&amp;&amp;&amp;&amp;&quot;)+&quot;-&quot;+detalle.cod_tipo.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)+&quot;-&quot;+detalle.cod_sec.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)+&quot; &quot;+detalle.descripcion.trim()+&quot; &quot;+detalle.unidad_med}}"/>
<rtl:input-variable name="detalle.cantidad_1" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox17" width="2.4inch" floatingBehavior="enclosed" textAlignment="right" text="{{detalle.cantidad_1.format(&quot;###,###.#####&quot;)}}"/>
<rtl:input-variable name="detalle.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox18" width="1.5inch" floatingBehavior="enclosed" textAlignment="right" text="{{detalle.cantidad.format(&quot;###,###.#####&quot;)}}"/>
</MINIPAGE>
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedAhead"/>
<LAYOUTNODE name="despiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="topToBottom" floatingBehavior="enclosed">
<WORDBOX name="WordBox20" width="max" floatingBehavior="enclosed" textAlignment="center" text="DESPIECE" roundedCorners="true" borderWidth="1" borderStyle="solid"/>
<LAYOUTNODE name="encabezadodespiece" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox24" width="1.5inch" floatingBehavior="enclosed" text="Etiquetas"/>
<WORDBOX name="WordBox26" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 1"/>
<WORDBOX name="WordBox27" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 2"/>
<WORDBOX name="WordBox28" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 3"/>
<WORDBOX name="WordBox29" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Unidades"/>
<WORDBOX name="WordBox30" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Medida"/>
</LAYOUTNODE>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedHere"/>
<LAYOUTNODE name="detalledespiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="etiqueta" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="etiqueta Value" class="grwStringValue" width="width(&quot;M&quot;)*15" alignment="baseline" floatingBehavior="enclosed" text="{{etiqueta}}"/>
<rtl:input-variable name="xdespiece.lado_1" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.lado_1 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.lado_1}}"/>
<rtl:input-variable name="xdespiece.lado_2" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.lado_2 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.lado_2}}"/>
<rtl:input-variable name="xdespiece.lado_3" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.lado_3 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.lado_3}}"/>
<rtl:input-variable name="xdespiece.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.cantidad Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.cantidad}}"/>
<rtl:input-variable name="xdespiece.medida" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.medida Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.medida}}"/>
</LAYOUTNODE>
</rtl:match>
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedBefore"/>
<LAYOUTNODE name="totaldespiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox21" width="4.8inch" floatingBehavior="enclosed" text="TOTALES"/>
<rtl:input-variable name="total_cantidad" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox22" width="1inch" floatingBehavior="enclosed" text="{{total_cantidad.format(&quot;##,###.#####&quot;)}}"/>
<rtl:input-variable name="total_medida" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox23" width="1inch" floatingBehavior="enclosed" text="{{total_medida.format(&quot;##,###.######&quot;)}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+126
View File
@@ -0,0 +1,126 @@
<?xml version="1.0" encoding="UTF-8"?>
<report:Report xmlns:rtl="http://www.4js.com/2004/RTL" xmlns:report="http://www.4js.com/2007/REPORT" xmlns="http://www.4js.com/2004/PXML" gstVersion="3140a" version="6.00">
<report:Settings RWPageWidth="letterwidth" RWPageLength="letterlength" RWLeftMargin="0.5inch" RWTopMargin="0.5inch" RWRightMargin="0.5inch" RWBottomMargin="0.5inch">
<report:FormatList>
<report:Format-SVG/>
<report:Format-PDF/>
<report:Format-image/>
</report:FormatList>
</report:Settings>
<report:Data RWDataLocation="../ipdir/ipautorizareq.rdd" RWFglReportName="requiereAutoriza"/>
<report:Conflicts>
<report:Conflict nodeName="encabezado" message="Node was in trigger &quot;FirstPageHeader [0; 1]&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="encabezado2" message="Node was in trigger &quot;FirstPageHeader [0; 1]&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="encabezadomaster" message="Node was in trigger &quot;FirstPageHeader [0; 1]&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="encabezadodetalle" message="Node was in trigger &quot;FirstPageHeader [0; 1]&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="despiece" message="Node was in trigger &quot;AfterGroup codigo&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="detalledespiece" message="Node was in trigger &quot;AfterGroup codigo&quot;, but trigger was removed during schema update"/>
<report:Conflict nodeName="totaldespiece" message="Node was in trigger &quot;AfterGroup codigo&quot;, but trigger was removed during schema update"/>
</report:Conflicts>
<rtl:stylesheet>
<PXML>
<rtl:match name="Report" nameConstraint="Report" minOccurs="1" maxOccurs="1">
<MINIPAGE name="Page Root" width="max" length="max">
<rtl:match name="FirstPageHeader" nameConstraint="FirstPageHeader" minOccurs="0" maxOccurs="1">
<LAYOUTNODE name="encabezado" width="min" length="max" alignment="center" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="p_companias.nombre" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox1" width="max-2cm" floatingBehavior="enclosed" textAlignment="center" text="{{p_companias.nombre}}"/>
<WORDBOX name="WordBox" floatingBehavior="enclosed" text="Pagina:"/>
<PAGENOBOX name="PageNoBox" floatingBehavior="enclosed"/>
</LAYOUTNODE>
<LAYOUTNODE name="encabezado2" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox2" width="max-2cm" fontBold="true" floatingBehavior="enclosed" textAlignment="center" text="REQUISICION DOCUMENTOS"/>
<rtl:input-variable name="hora" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox3" floatingBehavior="enclosed" text="{{hora}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="encabezadomaster" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<LAYOUTNODE name="LayoutNode1" width="3inch" length="min" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<rtl:input-variable name="nombreusuario" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox4" length="1cm" floatingBehavior="enclosed" text="{{&quot;USUARIO: &quot;+nombreusuario.trim()}}"/>
<rtl:input-variable name="x.numero_doc" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox5" fontSize="12" fontBold="true" floatingBehavior="enclosed" text="{{&quot;DOCUMENTO: &quot;+x.numero_doc.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="x.cod_mov" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="nombreMov" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox" width="width(&quot;M&quot;)*27" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;TIPO DOCUMENTO: &quot;+&quot;(&quot;+x.cod_mov.format(&quot;&lt;&lt;&lt;&quot;)+&quot;)&quot;+nombreMov.trim()}}"/>
<rtl:input-variable name="x.fecha" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox6" floatingBehavior="enclosed" text="{{&quot;FECHA: &quot;+x.fecha}}"/>
<rtl:input-variable name="nombreBodega" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox8" floatingBehavior="enclosed" text="{{&quot;BODEGA: &quot;+nombreBodega}}"/>
</LAYOUTNODE>
<LAYOUTNODE name="LayoutNode2" width="3inch" length="min" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox12" length="1cm" alignment="baseline" floatingBehavior="enclosed"/>
<rtl:input-variable name="nombreBodegaDestino" type="FGLString" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox9" floatingBehavior="enclosed" text="{{&quot;BODEGA DESTINO: &quot;+nombreBodegaDestino}}"/>
<rtl:input-variable name="x.num_oc" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox10" floatingBehavior="enclosed" text="{{&quot;NUMERO ORDEN:&quot;+x.num_oc.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)}}"/>
<rtl:input-variable name="vendedor" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="vendedor Value" class="grwStringValue" width="width(&quot;M&quot;)*25" alignment="baseline" floatingBehavior="enclosed" text="{{&quot;VENDEDOR: &quot;+vendedor.trim()}}"/>
<rtl:input-variable name="x.cliente" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox1" width="width(&quot;M&quot;)*27" floatingBehavior="enclosed" text="{{&quot;CLIENTE: &quot;+x.cliente}}"/>
<rtl:input-variable name="x.observacion" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox2" width="width(&quot;M&quot;)*20" floatingBehavior="enclosed" text="{{&quot;OBSERVACION: &quot;+x.observacion.trim()}}"/>
</LAYOUTNODE>
</LAYOUTNODE>
<LAYOUTNODE name="encabezadodetalle" width="min" length="min" fontSize="8" fontBold="true" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox13" width="3.5inch" floatingBehavior="enclosed" text="ITEM(S)" roundedCorners="false" borderWidth="1"/>
<WORDBOX name="WordBox14" width="2.2inch" floatingBehavior="enclosed" textAlignment="right" text="UNIDAD"/>
<WORDBOX name="WordBox15" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="CANTIDAD"/>
</LAYOUTNODE>
</rtl:match>
<rtl:match name="Group codigo" nameConstraint="Group" minOccurs="0" maxOccurs="unbounded">
<MINIPAGE name="table" width="min" length="min" fontSize="8" layoutDirection="leftToRight">
<rtl:input-variable name="detalle.cod_n" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.cod_grupo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.cod_tipo" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.cod_sec" type="FGLNumeric" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.descripcion" type="FGLString" expectedLocation="expectedHere"/>
<rtl:input-variable name="detalle.unidad_med" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="WordWrapBox3" width="width(&quot;M&quot;)*30" length="min" alignment="baseline" floatingBehavior="enclosed" text="{{detalle.cod_n.format(&quot;&amp;&amp;&amp;&amp;&quot;)+&quot;-&quot;+detalle.cod_grupo.format(&quot;&amp;&amp;&amp;&amp;&quot;)+&quot;-&quot;+detalle.cod_tipo.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)+&quot;-&quot;+detalle.cod_sec.format(&quot;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;&quot;)+&quot; &quot;+detalle.descripcion.trim()+&quot; &quot;+detalle.unidad_med}}"/>
<rtl:input-variable name="detalle.cantidad_1" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox17" width="2.4inch" floatingBehavior="enclosed" textAlignment="right" text="{{detalle.cantidad_1.format(&quot;###,###.#####&quot;)}}"/>
<rtl:input-variable name="detalle.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<WORDBOX name="WordBox18" width="1.5inch" floatingBehavior="enclosed" textAlignment="right" text="{{detalle.cantidad.format(&quot;###,###.#####&quot;)}}"/>
</MINIPAGE>
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedAhead"/>
<LAYOUTNODE name="despiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="topToBottom" floatingBehavior="enclosed">
<WORDBOX name="WordBox20" width="max" floatingBehavior="enclosed" textAlignment="center" text="DESPIECE" roundedCorners="true" borderWidth="1" borderStyle="solid"/>
<LAYOUTNODE name="encabezadodespiece" width="min" length="max" layoutDirection="leftToRight" floatingBehavior="enclosed" roundedCorners="true" borderWidth="1" borderStyle="solid">
<WORDBOX name="WordBox24" width="1.5inch" floatingBehavior="enclosed" text="Etiquetas"/>
<WORDBOX name="WordBox26" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 1"/>
<WORDBOX name="WordBox27" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 2"/>
<WORDBOX name="WordBox28" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Lado 3"/>
<WORDBOX name="WordBox29" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Unidades"/>
<WORDBOX name="WordBox30" width="1inch" floatingBehavior="enclosed" textAlignment="right" text="Medida"/>
</LAYOUTNODE>
</LAYOUTNODE>
<rtl:match name="OnEveryRow" nameConstraint="OnEveryRow" minOccurs="0" maxOccurs="unbounded">
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedHere"/>
<LAYOUTNODE name="detalledespiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<rtl:input-variable name="etiqueta" type="FGLString" expectedLocation="expectedHere"/>
<WORDWRAPBOX name="etiqueta Value" class="grwStringValue" width="width(&quot;M&quot;)*15" alignment="baseline" floatingBehavior="enclosed" text="{{etiqueta}}"/>
<rtl:input-variable name="xdespiece.lado_1" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.lado_1 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.lado_1}}"/>
<rtl:input-variable name="xdespiece.lado_2" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.lado_2 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.lado_2}}"/>
<rtl:input-variable name="xdespiece.lado_3" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.lado_3 Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.lado_3}}"/>
<rtl:input-variable name="xdespiece.cantidad" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.cantidad Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.cantidad}}"/>
<rtl:input-variable name="xdespiece.medida" type="FGLNumeric" expectedLocation="expectedHere"/>
<DECIMALFORMATBOX name="despiece.medida Value" class="grwNumericValue" width="1inch" anchorX="1" floatingBehavior="enclosed" textAlignment="right" format="---,---,---,--&amp;.&amp;&amp;" value="{{xdespiece.medida}}"/>
</LAYOUTNODE>
</rtl:match>
<rtl:input-variable name="tienedespiece" type="FGLNumeric" expectedLocation="expectedBefore"/>
<LAYOUTNODE name="totaldespiece" rtl:condition="tienedespiece==1" width="min" length="min" fontSize="8" layoutDirection="leftToRight" floatingBehavior="enclosed">
<WORDBOX name="WordBox21" width="4.8inch" floatingBehavior="enclosed" text="TOTALES"/>
<rtl:input-variable name="total_cantidad" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox22" width="1inch" floatingBehavior="enclosed" text="{{total_cantidad.format(&quot;##,###.#####&quot;)}}"/>
<rtl:input-variable name="total_medida" type="FGLNumeric" expectedLocation="expectedBefore"/>
<WORDBOX name="WordBox23" width="1inch" floatingBehavior="enclosed" text="{{total_medida.format(&quot;##,###.######&quot;)}}"/>
</LAYOUTNODE>
</rtl:match>
</MINIPAGE>
</rtl:match>
</PXML>
</rtl:stylesheet>
</report:Report>
+3
View File
@@ -199,6 +199,9 @@ adtb00003^sexo^0^10^67^
adtb00003^email_corporativo^201^100^68^
adtb00003^enviar_encuesta^0^10^69^
adtb00003^enviar_volante^0^10^70^
adtb00003^telefonoCorporativo^0^15^71^
adtb00003^numeroOficina^0^15^72^
adtb00003^extension^0^5^73^
adtb00004^cod_puesto^1^2^1^
adtb00004^nom_puesto^0^180^2^
adtb00004^otra_descripcion^0^180^3^
+7
View File
@@ -6,3 +6,10 @@ dbi.database.mydatabase.source = "mydatabase.db"
# OJO: el runtime debe tener el driver dbmsnc (esta en fgl602, NO en el 6.00.01 de GST603).
dbi.database.smarmotech.source = "marmotech250s"
dbi.database.smarmotech.driver = "dbmsnc"
# --- MBS ERP: conexion marmotech -> .250/EXTERIOR (DSN ODBC18 marmotech) ---
# Segunda conexion legada de la epoca Informix (alias IFMX/SQL_E en varios
# programas viejos), usada para validar movimientos contra Cuentas por
# Cobrar en la base EXTERIOR. Autorizado por Johnny Soto, 11/09/2026.
dbi.database.marmotech.source = "exteriordb"
dbi.database.marmotech.driver = "dbmsnc"
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+36 -11
View File
@@ -167,22 +167,47 @@ END FUNCTION
FUNCTION configureOutput(tipo_file)
DEFINE tipo_file CHAR(3)
-- La API fgl_report_* (Report Writer 2.0) no esta disponible en este
-- FGL 6.00.01. Esta salida (XML/XLS/PDF por handler) no esta soportada
-- en este entorno; usar r_output = 'MA' (impresion clasica) en su lugar.
IF NOT fgl_report_loadCurrentSettings(NULL) THEN
RETURN NULL
END IF
CALL fgl_report_setPageMargins("0.5cm", "0.5cm", "0.5cm", "0.5cm")
CALL fgl_report_configureCompatibilityOutput(160,"Monospaced",NULL,NULL,NULL,NULL)
CALL fgl_report_selectDevice(tipo_file)
CALL fgl_report_configurexlsxdevice(NULL, NULL, NULL, FALSE, FALSE, NULL, 1)
CALL fgl_report_selectPreview(TRUE)
RETURN fgl_report_commitCurrentSettings()
RETURN NULL
END FUNCTION
FUNCTION selectOutput()
-- El formulario "Configuration" del Report Writer 2.0 no esta disponible
-- en este entorno (ver configureOutput). Se devuelve un valor fijo para
-- que el flujo de "Reporte Grafico" siga y falle de forma consistente
-- con la limitacion ya conocida; usar MATRICIAL en su lugar.
RETURN "PDF"
DEFINE
r_output STRING,
r_action STRING,
preview INTEGER
OPTIONS INPUT WRAP
OPEN WINDOW f_configuration WITH FORM "Configuration"
LET INT_FLAG=FALSE
LET preview = FALSE
INPUT BY NAME r_output
ON ACTION CANCEL
EXIT PROGRAM
ON ACTION CLOSE
EXIT PROGRAM
END INPUT
CLOSE WINDOW f_configuration
CALL ui.interface.refresh()
IF r_action IS NOT NULL THEN
IF r_action == "preview" THEN
LET preview = TRUE
END IF
END IF
RETURN r_output
END FUNCTION
FUNCTION seleccionarSalida()
-- Mismo caso que selectOutput(): el formulario "Configuration" del
-- Report Writer 2.0 no esta disponible en este entorno; usar MATRICIAL.
RETURN "PDF"
RETURN selectOutput()
END FUNCTION
+7 -7
View File
@@ -159,14 +159,11 @@ LET selec =
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
LET opt1 = "yes"
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT opera TO XML HANDLER HANDLER
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING handler
START REPORT opera TO XML HANDLER HANDLER
PREPARE busca_p FROM selec
DECLARE periodo SCROLL CURSOR FOR busca_p
OPEN periodo using ano_act,datos_cons.fech_in,datos_cons.fech_fi
@@ -185,6 +182,9 @@ LET selec =
FINISH REPORT opera
CLEAR SCREEN
IF opt1 <> "yes" THEN
RUN imprime
END IF
END FUNCTION
REPORT opera(x)
+15 -1
View File
@@ -184,7 +184,7 @@ LET select_ant =
IF opt1 = "yes" THEN
CALL seleccionarsalida() RETURNING r_output
CALL configureoutput(r_output) RETURNING HANDLER
CALL configureOutputRp028(r_output) RETURNING HANDLER
START REPORT prt_exist TO XML HANDLER handler
ELSE
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
@@ -438,3 +438,17 @@ END FUNCTION
PRINT COLUMN 4, ASCII 27, ASCII 80
END REPORT
FUNCTION configureOutputRp028(tipo_file)
DEFINE tipo_file CHAR(3)
IF NOT fgl_report_loadCurrentSettings("inprrp028.4rp") THEN
RETURN NULL
END IF
CALL fgl_report_setPageMargins("0.5cm", "0.5cm", "0.5cm", "0.5cm")
CALL fgl_report_selectDevice(tipo_file)
CALL fgl_report_configurexlsxdevice(NULL, NULL, NULL, FALSE, FALSE, NULL, 1)
CALL fgl_report_selectPreview(TRUE)
RETURN fgl_report_commitCurrentSettings()
RETURN NULL
END FUNCTION
-3213
View File
File diff suppressed because it is too large Load Diff
@@ -4,10 +4,10 @@ FUNCTION buscadoc(numid,codmov)
DEFINE numid,codmov INT
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,b.descripcion,a.observacion
a.estado,a.url_destino,b.descripcion,a.observacion,a.us_crea
INTO p_iptb57.numero_doc,p_iptb57.cod_mov,p_iptb57.fecha,p_iptb57.num_oc,p_iptb57.tipo_cliente,p_iptb57.sec_cliente,
p_iptb57.cliente,p_iptb57.bodega,p_iptb57.bodega_destino,p_iptb57.estado,
p_iptb57.url_file,p_iptb57.observacion
p_iptb57.url_file,p_iptb57.idstado,p_iptb57.observacion,p_iptb57.us_crea
FROM iptb00057 a, iptb00061 b
WHERE a.numero_doc = numid AND a.cod_mov = codmov AND
a.idestado = b.idestado
@@ -15,7 +15,20 @@ FUNCTION buscadoc(numid,codmov)
#BODEGA DESTINO
IF p_iptb57.bodega_destino IS NOT NULL THEN
SELECT a.descripcion INTO nombreBodegaDestino FROM intb00009 a WHERE a.cod_bodega = p_iptb57.bodega_destino
END IF
END IF
#BODEGA ORIGEN
IF p_iptb57.bodega IS NOT NULL THEN
SELECT a.descripcion INTO nombreBodega FROM intb00009 a WHERE a.cod_bodega = p_iptb57.bodega
END IF
#TIPO DE MOVIMIENTO
IF p_iptb57.cod_mov IS NOT NULL THEN
SELECT RTRIM(a.descrip_mov) || '(' || CAST(a.cod_mov AS VARCHAR(6)) || ')' INTO nombreMov
FROM iptb00005 a WHERE a.cod_mov = p_iptb57.cod_mov
END IF
#USUARIO QUE CREO EL DOCUMENTO
IF p_iptb57.us_crea IS NOT NULL THEN
CALL usuarioSistema(p_iptb57.us_crea) RETURNING nombreUsuario,email
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,b.factor_conv,
@@ -77,7 +77,7 @@ FUNCTION ipautorizadas(xusuario)
END IF
ON ACTION imprimir ATTRIBUTE(TEXT="Imprimir", IMAGE="printer")
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
CALL buscadoc(arr_busqueda1[arr_curr()].numeroid,arr_busqueda1[arr_curr()].cod_mov1)
CALL buscadocAutoriza(arr_busqueda1[arr_curr()].numeroid,arr_busqueda1[arr_curr()].cod_mov1)
LET data.rnumeroDoc = arr_busqueda1[arr_curr()].numeroid
LET data.rcodMov = arr_busqueda1[arr_curr()].cod_mov1
LET data.rtipo_cliente = arr_busqueda1[arr_curr()].rtipo_cliente
@@ -88,7 +88,7 @@ FUNCTION ipautorizadas(xusuario)
LET data.bodega_destino = arr_busqueda1[arr_curr()].bodega_destino
LET nombreUsuario = arr_busqueda1[arr_curr()].usuario
CALL impdocumento()
CALL impdocumentoAutoriza()
END IF
ON ACTION procesar ATTRIBUTE(TEXT="Procesa",IMAGE="")
IF arr_busqueda1[arr_curr()].numeroid > 0 THEN
@@ -172,7 +172,7 @@ FUNCTION buscadataReq(pusuario)
END FUNCTION
FUNCTION buscadoc(numid,codmov)
FUNCTION buscadocAutoriza(numid,codmov)
DEFINE numid,codmov INT
LET vendedor = null
@@ -235,7 +235,7 @@ FUNCTION buscadoc(numid,codmov)
LET idx = idx + 1
END FOREACH
END FUNCTION
FUNCTION impdocumento()
FUNCTION impdocumentoAutoriza()
DEFINE idx_l INT,
xcodigo VARCHAR(50)
LET r_filename = "ipprmt020_1.4rp"
@@ -251,7 +251,7 @@ FUNCTION impdocumento()
ELSE
RETURN
END IF
START REPORT requiere TO XML HANDLER HANDLER
START REPORT requiereAutoriza TO XML HANDLER HANDLER
FOR idx = 1 TO arr_iptb58.getLength()
@@ -261,15 +261,15 @@ FUNCTION impdocumento()
arr_iptb58[idx].cod_tipo USING '&&&&&&','-',
arr_iptb58[idx].cod_sec USING '&&&&&&&'
OUTPUT TO REPORT requiere(p_iptb57.*,arr_iptb58[idx].*,despiece1[idx].*, xcodigo)
OUTPUT TO REPORT requiereAutoriza(p_iptb57.*,arr_iptb58[idx].*,despiece1[idx].*, xcodigo)
END IF
END FOR
FINISH REPORT requiere
FINISH REPORT requiereAutoriza
END FUNCTION
REPORT requiere(x,detalle,xdespiece,codigo)
REPORT requiereAutoriza(x,detalle,xdespiece,codigo)
DEFINE hora STRING,
detalle RECORD
area INT,
@@ -308,7 +308,8 @@ REPORT requiere(x,detalle,xdespiece,codigo)
estado VARCHAR(50),
ruta_documento ,
url_file ,
idestado VARCHAR(200)
idestado VARCHAR(200),
us_crea VARCHAR(50)
END RECORD,
etiqueta VARCHAR(100),

Some files were not shown because too many files have changed in this diff Show More