From a52b16b8b2676cfdd930df254858d3a2624e2a6f Mon Sep 17 00:00:00 2001 From: Jeilyn Peguero Date: Fri, 16 Oct 2026 17:00:54 -0400 Subject: [PATCH 1/2] ipprmt005 (Clase): graba Inventario y oculta clases eliminadas - Alta y modificacion ahora graban cod_inv (Inventario); antes se leia en la consulta pero nunca se guardaba (igual en el 42m de produccion 3.20). - La consulta excluye las clases con status_t = 'E' (eliminadas) y lee status_t, para que al consultar una eliminada salga REGISTRO NO EXISTE y funcione el control de Escoger sobre registros anulados. - Impresora se deja sin tocar, como en 3.20: el combo no tiene opciones (tampoco en produccion) y guardarlo borraria valores existentes (80-83) que usa veconvierteorden para rutear impresion de ordenes. - Configuracion de ejecucion con el usuario de la responsable (antes usaba el de jsoto, por eso grababa ese usuario como creador/modificador). Verificado: consulta de clase eliminada (211) da REGISTRO NO EXISTE; alta (212) graba Inventario y usuario jpeguero. Pendiente: probar Escoger y eLiminar con la nueva version y confirmar en produccion que cod_inv solo usa los valores del combo. Co-Authored-By: Claude Opus 5.5 --- PROYECTO/ipdir/ipprmt005.4gl | 21 +++++++++++---------- PROYECTO/mbsERP.4pw | 2 +- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/PROYECTO/ipdir/ipprmt005.4gl b/PROYECTO/ipdir/ipprmt005.4gl index 7a7d25f..66a79a8 100644 --- a/PROYECTO/ipdir/ipprmt005.4gl +++ b/PROYECTO/ipdir/ipprmt005.4gl @@ -79,8 +79,8 @@ FUNCTION ippcad012() LET p_iptb20.cod_n = p_iptb20.cod_n + 1 DISPLAY p_iptb20.cod_n TO cod_n BEGIN WORK - INSERT INTO iptb00020 (cod_n,producto,us_crea,fech_crea,comentario,genera_orden,instalacion) - VALUES (p_iptb20.cod_n,p_iptb20.producto,usuarios,getdate(),p_iptb20.comentario,p_iptb20.genera_orden,p_iptb20.instalacion) + INSERT INTO iptb00020 (cod_n,producto,us_crea,fech_crea,comentario,genera_orden,instalacion,cod_inv) + VALUES (p_iptb20.cod_n,p_iptb20.producto,usuarios,getdate(),p_iptb20.comentario,p_iptb20.genera_orden,p_iptb20.instalacion,p_iptb20.cod_inv) INSERT INTO iptb00035 (cod_n,cod_cat) VALUES (p_iptb20.cod_n,p_iptb20.cod_cat) COMMIT WORK @@ -108,8 +108,8 @@ SET CONNECTION "MSSQL" EXIT CONSTRUCT END CONSTRUCT LET SELEC = " SELECT DISTINCT a.cod_n,a.producto,a.us_crea,a.us_mod,a.fech_crea,a.fech_mod,a.cod_inv,b.cod_cat, - a.comentario,a.genera_orden,a.instalacion FROM iptb00020 a LEFT OUTER JOIN iptb00035 b ON a.cod_n = b.cod_n ", - " WHERE ", + a.comentario,a.genera_orden,a.instalacion,a.status_t FROM iptb00020 a LEFT OUTER JOIN iptb00035 b ON a.cod_n = b.cod_n ", + " WHERE a.status_t IS NULL AND ", criterio clipped, " ORDER BY a.cod_n" @@ -119,7 +119,7 @@ SET CONNECTION "MSSQL" FETCH FIRST datos INTO p_iptb20.cod_n,p_iptb20.producto,p_iptb20.us_crea,p_iptb20.us_mod,p_iptb20.fech_crea, p_iptb20.fech_mod,p_iptb20.cod_inv, p_iptb20.cod_cat,p_iptb20.comentario, - p_iptb20.genera_orden,p_iptb20.instalacion + p_iptb20.genera_orden,p_iptb20.instalacion,p_iptb20.status_t IF status >= 0 THEN IF STATUS = NOTFOUND THEN @@ -140,7 +140,7 @@ SET CONNECTION "MSSQL" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO p_iptb20.cod_n,p_iptb20.producto,p_iptb20.us_crea,p_iptb20.us_mod,p_iptb20.fech_crea, p_iptb20.fech_mod,p_iptb20.cod_inv, p_iptb20.cod_cat,p_iptb20.comentario, - p_iptb20.genera_orden,p_iptb20.instalacion + p_iptb20.genera_orden,p_iptb20.instalacion,p_iptb20.status_t IF STATUS = NOTFOUND THEN @@ -157,7 +157,7 @@ SET CONNECTION "MSSQL" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO p_iptb20.cod_n,p_iptb20.producto,p_iptb20.us_crea,p_iptb20.us_mod,p_iptb20.fech_crea, p_iptb20.fech_mod,p_iptb20.cod_inv, p_iptb20.cod_cat,p_iptb20.comentario, - p_iptb20.genera_orden,p_iptb20.instalacion + p_iptb20.genera_orden,p_iptb20.instalacion,p_iptb20.status_t IF STATUS = NOTFOUND THEN @@ -174,7 +174,7 @@ SET CONNECTION "MSSQL" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO p_iptb20.cod_n,p_iptb20.producto,p_iptb20.us_crea,p_iptb20.us_mod,p_iptb20.fech_crea, p_iptb20.fech_mod,p_iptb20.cod_inv, p_iptb20.cod_cat,p_iptb20.comentario, - p_iptb20.genera_orden,p_iptb20.instalacion + p_iptb20.genera_orden,p_iptb20.instalacion,p_iptb20.status_t DISPLAY BY NAME p_iptb20.*,p_iptb20.cod_cat @@ -185,7 +185,7 @@ SET CONNECTION "MSSQL" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO p_iptb20.cod_n,p_iptb20.producto,p_iptb20.us_crea,p_iptb20.us_mod,p_iptb20.fech_crea, p_iptb20.fech_mod,p_iptb20.cod_inv, p_iptb20.cod_cat,p_iptb20.comentario, - p_iptb20.genera_orden,p_iptb20.instalacion + p_iptb20.genera_orden,p_iptb20.instalacion,p_iptb20.status_t DISPLAY BY NAME p_iptb20.cod_n,p_iptb20.producto,p_iptb20.us_crea,p_iptb20.us_mod,p_iptb20.fech_crea, @@ -203,7 +203,7 @@ SET CONNECTION "MSSQL" CALL msg(36) EXIT MENU END IF - INPUT BY NAME p_iptb20.producto,p_iptb20.cod_cat,p_iptb20.comentario,p_iptb20.genera_orden,p_iptb20.instalacion WITHOUT DEFAULTS + INPUT BY NAME p_iptb20.producto,p_iptb20.cod_inv,p_iptb20.comentario,p_iptb20.cod_cat,p_iptb20.genera_orden,p_iptb20.instalacion WITHOUT DEFAULTS AFTER INPUT @@ -222,6 +222,7 @@ SET CONNECTION "MSSQL" BEGIN WORK UPDATE iptb00020 SET producto = p_iptb20.producto, comentario = p_iptb20.comentario, + cod_inv = p_iptb20.cod_inv, genera_orden = p_iptb20.genera_orden, us_mod = SUSER_SNAME(), fech_mod = GETDATE() , diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 502b77a..8088842 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -678,7 +678,7 @@ - + From f6e41932b135148a0778eae4b02ed7da1328c890 Mon Sep 17 00:00:00 2001 From: Jeilyn Peguero Date: Sat, 17 Oct 2026 12:05:43 -0400 Subject: [PATCH 2/2] prprmt011 (Administracion Ordenes): formularios faltantes y fechas -1205 - Registra en FORMULARIOS_PR los formularios que el programa y sus librerias abren y no estaban en el proyecto: prfmmt011b, prfmmt011c, prfmwd015, prfmcs002, prfmmt021b/c/d, prfmwd002, prfmwd012, prfmwd013. - prfmmt012 registrado era el de ccdir (otro formulario con el mismo nombre); se reemplaza por PRDIR/prfmmt012.4fd (campos iguales al 42f de produccion). - Rescata otrodir/existenciaalmacenes.4fd del respaldo PROYECTOS y lo registra en FUNCIONES_PR junto a existenciaalmacenes.4gl. - prfmwd014.per: s_llegada[9] -> [5]; la pantalla dibuja 5 filas y el formulario no compilaba (-2029). Tampoco existia compilado en produccion. - Quita CONVERT(...,103) en 8 lecturas que llenan campos DATE (consulta principal, fecha_llegada, parciales y datos de cotizacion); con dias >12 el programa terminaba con error al buscar. Se dejan los CONVERT que llenan campos CHAR(10). - Titulo de ventana "Administracion Ordenes". Verificado: busqueda 01/07/2026-02/07/2026 trae 189 lineas con colores; botones transacciones y Requisicion funcionan. Pendiente probar Existencia, flujo, Documentos, fllegada, parciales, visualiza_log, Reporte Data e Informe. Nota: un mes completo (3,105 lineas) tarda varios minutos por las consultas por linea (diseno original). Pendiente Johnny: FORMULARIOS_PR no compila completo por prfmmt006 (columna prtb00007.orden_pedido inexistente) y msgfmwd001 (msgrp000) no tiene fuente en ningun lado. Co-Authored-By: Claude Opus 5.5 --- PROYECTO/PRDIR/prprmt011.4gl | 13 ++++---- PROYECTO/mbsERP.4pw | 13 +++++++- PROYECTO/otrodir/existenciaalmacenes.4fd | 38 ++++++++++++++++++++++++ PROYECTO/vedir/prfmwd014.per | 2 +- 4 files changed, 58 insertions(+), 8 deletions(-) create mode 100644 PROYECTO/otrodir/existenciaalmacenes.4fd diff --git a/PROYECTO/PRDIR/prprmt011.4gl b/PROYECTO/PRDIR/prprmt011.4gl index 693b54c..ec806e4 100644 --- a/PROYECTO/PRDIR/prprmt011.4gl +++ b/PROYECTO/PRDIR/prprmt011.4gl @@ -140,6 +140,7 @@ FUNCTION prprmt011() --fechaSolDespacho OPEN WINDOW prfmmt011 AT 10,10 WITH FORM "prfmmt011" + CALL ui.Window.getCurrent().setText("Administracion Ordenes") #WHENEVER ERROR CONTINUE LET w = ui.Window.getCurrent() @@ -201,7 +202,7 @@ FUNCTION prprmt011() IF busqueda IS NULL THEN LET selec1 = " SELECT 'N', x.cerrada, x1.estado_produccion,x1.estado_producto,x1.departamento,x3.nom_dpto,RTRIM(CAST(x.sec_vend AS CHAR)) + ' ' + RTRIM(b.nom1_emp), b.apell1_emp, ", - " CONVERT(CHAR(10), x.fecha_oc,103) AS fecha_orden , CONVERT(char(10),x1.fecha_compromiso,103) ,x1.fecha_llegada, x1.fecha_disp_entrega, ", + " x.fecha_oc AS fecha_orden , x1.fecha_compromiso ,x1.fecha_llegada, x1.fecha_disp_entrega, ", " x1.fecha_solic_despacho, x1.fecha_instalacion, x.cotizacion_no, x.num_oc,x5.num_oc, x.observacion,g.descripcion, CAST(e.tipo_cliente AS CHAR(2)) ", " + '-' + CAST(e.sec_cliente AS CHAR(6)) + ' ' + RTRIM(e.nombre) ,x4.descripcion, CAST(x1.cod_n AS VARCHAR(4)) + '-' + CAST(x1.cod_grupo AS VARCHAR(4)) ", " + '-' + CAST(x1.cod_tipo AS VARCHAR(4)) + '-' + CAST(x1.cod_sec AS VARCHAR(7)) + ' ' + RTRIM(x2.descrip_esp), ", @@ -243,7 +244,7 @@ FUNCTION prprmt011() END IF LET selec1 = " SELECT 'N', x.cerrada, x1.estado_produccion,x1.estado_producto,x1.departamento,x3.nom_dpto,RTRIM(CAST(x.sec_vend AS CHAR)) + ' ' + RTRIM(b.nom1_emp), b.apell1_emp, ", - " CONVERT(CHAR(10), x.fecha_oc,103) AS fecha_orden , CONVERT(char(10),x1.fecha_compromiso,103) , + " x.fecha_oc AS fecha_orden , x1.fecha_compromiso , x1.fecha_llegada,x1.fecha_disp_entrega, ", " x1.fecha_solic_despacho, x1.fecha_instalacion, x.cotizacion_no, x.num_oc,x5.num_oc, x.observacion,g.descripcion, CAST(e.tipo_cliente AS CHAR(2)) ", " + '-' + CAST(e.sec_cliente AS CHAR(6)) + ' ' + RTRIM(e.nombre) ,x4.descripcion, CAST(x1.cod_n AS VARCHAR(4)) + '-' + CAST(x1.cod_grupo AS VARCHAR(4)) ", @@ -281,7 +282,7 @@ FUNCTION prprmt011() IF actualiza_log_produccion="SI" THEN LET selec1= " SELECT 'N', x.cerrada, x1.estado_produccion,x1.departamento,x3.nom_dpto,RTRIM(CAST(x.sec_vend AS CHAR)) + ' ' + RTRIM(b.nom1_emp), b.apell1_emp, ", - " CONVERT(CHAR(10), x.fecha_oc,103) AS fecha_orden , CONVERT(char(10),x1.fecha_compromiso,103) ,' ', x.cotizacion_no, x.num_oc, x.observacion,g.descripcion, CAST(e.tipo_cliente AS CHAR(2)) ", + " x.fecha_oc AS fecha_orden , x1.fecha_compromiso ,' ', x.cotizacion_no, x.num_oc, x.observacion,g.descripcion, CAST(e.tipo_cliente AS CHAR(2)) ", " + '-' + CAST(e.sec_cliente AS CHAR(6)) + ' ' + RTRIM(e.nombre) , CAST(x1.cod_n AS VARCHAR(4)) + '-' + CAST(x1.cod_grupo AS VARCHAR(4)) ", " + '-' + CAST(x1.cod_tipo AS VARCHAR(4)) + '-' + CAST(x1.cod_sec AS VARCHAR(4)) + ' ' + RTRIM(x2.descrip_esp), ", " SUM(x1.cantidad), '0' , '0' , '0' , x.sec_vend, x1.cod_n, x1.cod_grupo, x1.cod_tipo, x1.cod_Sec, e.tipo_cliente, e.sec_cliente, ", @@ -440,7 +441,7 @@ FUNCTION prprmt011() IF veces > 1 THEN LET att[idx].col7 = 'blue reverse' ELSE - SELECT CONVERT(CHAR(10),a.fecha_llegada,103) INTO arr_ordenes[idx].fecha_llegada + SELECT a.fecha_llegada INTO arr_ordenes[idx].fecha_llegada FROM cctb00026 a WHERE a.num_oc = arr_ordenes[idx].num_oc AND a.cod_n = arr_ordenes[idx].cod_n AND @@ -1091,7 +1092,7 @@ FUNCTION fparciales(xnum_oc,xcodn,xcodgrupo,xcodtipo,xcodsec,xfecha,xproducto) DECLARE busca_parcial CURSOR FOR - SELECT CONVERT(CHAR(10),a.fecha_compromiso,103),a.cantidad FROM prtb00028 a + SELECT a.fecha_compromiso,a.cantidad FROM prtb00028 a WHERE a.num_oc = xnum_oc AND a.cod_n = xcodn AND a.cod_grupo = xcodgrupo AND @@ -1313,7 +1314,7 @@ FUNCTION vepcmf008(num_cotizacion) LET SELEC = " SELECT DISTINCT a.cod_cia,a.ventas,a.cotizacion_no,a.tipo_cliente,a.sec_cliente,a.nombre_cliente, " || " a.rnc,a.nombre_proyecto,a.direccion_cliente,a.cod_provincia,a.direccion_proyecto, " || " a.telefono_r,a.telefono_o,a.email,a.tipo_precio,a.beeper,a.celular,a.prima,a.fax1,a.celular1, " || - " a.fax, CONVERT(CHAR(10),a.fecha,103),CONVERT(CHAR(10),a.fecha_entrega,103), " || + " a.fax, a.fecha,a.fecha_entrega, " || " a.plazo_entrega,a.comentario,a.contacto, a.cond_pago,a.sec_Vend,a.porc_itbi," || " a.total_bruto,a.sub_total,a.monto_Desc,a.monto_itbi,a.total_neto,a.monto_dolar,a.num_emp_inst, " || " a.codigo_dgii,a.tipo_ncf,a.cliente_generico,a.sec_vend_aux,a.codigo,a.cod_zona,a.sincronizado, "|| diff --git a/PROYECTO/mbsERP.4pw b/PROYECTO/mbsERP.4pw index 90b8326..8c1a66f 100644 --- a/PROYECTO/mbsERP.4pw +++ b/PROYECTO/mbsERP.4pw @@ -913,11 +913,21 @@ + + + + + + + + + + - + @@ -929,6 +939,7 @@ + diff --git a/PROYECTO/otrodir/existenciaalmacenes.4fd b/PROYECTO/otrodir/existenciaalmacenes.4fd new file mode 100644 index 0000000..dbdc7f9 --- /dev/null +++ b/PROYECTO/otrodir/existenciaalmacenes.4fd @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + +
+ + +
+ + + +
\ No newline at end of file diff --git a/PROYECTO/vedir/prfmwd014.per b/PROYECTO/vedir/prfmwd014.per index 5cfce84..294297e 100644 --- a/PROYECTO/vedir/prfmwd014.per +++ b/PROYECTO/vedir/prfmwd014.per @@ -20,7 +20,7 @@ X = formonly.fecha,FORMAT="dd/mm/yyyy"; x1 = formonly.num_req,TITLE="REQUISICION"; f1 = formonly.fecha_llegada,TITLE="FECHA LLEGADA"; instructions - screen record s_llegada[9] (fecha_llegada,num_req,fecha) + screen record s_llegada[5] (fecha_llegada,num_req,fecha) delimiters " " end