Files
MBS/PROYECTO/otrodir/mercancia_transito.4gl
T
jpegueroandClaude Sonnet 5 5f1c3b6e3b Corregir ipprcs004/ipprcs004_1 (Consulta Existencias): crashes al probar botones migrados
- mercancia_transito.4gl y funciones_ip.4gl: quitar CONVERT(...,103) al
  traer fechas de SQL Server, causaba "Invalid month in date" (-1205) en
  ambiente de pruebas por ambiguedad de formato dd/mm/yyyy vs mm/dd/yyyy.
- ipprcs004_1: agregar dependencia faltante FUNCIONES_PR (no linkeaba,
  llamaba mercancia_transito/fechas_llegadas sin tener el modulo).
- Registrar en el proyecto tres formularios que existian en el repo pero
  nunca se agregaron a mbsERP.4pw (ipfmwd017.4fd, almacenes.4fd,
  cofmfu009.4fd), causaban "Form file not found" en los botones
  Ordenes/Almacenes/Fecha Llegada.

Verificado botón por botón contra produccion (Genero 3.20, .40.8) con el
mismo codigo de producto: Foto, Ordenes, Reservados, Ubicacion, Almacenes
y Reporte (PDF/pantalla/Excel) dan resultados consistentes.

Pendiente aparte: el patron CONVERT(...,103) aparece en ~132 archivos del
proyecto, riesgo sistemico a evaluar por separado.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-21 12:56:39 -04:00

62 lines
2.7 KiB
Plaintext

FUNCTION mercancia_transito(pcodn,pcodgrupo,pcodtipo,pcodsec,fecha_transito,cod_inventario)
DEFINE pcodn,pcodgrupo,pcodtipo,pcodsec,cod_inventario SMALLINT,
cantidad_ordenada, cantidad_recibida,transito DEC(12,5),
fecha_transito,fecha_ordenada,fecha_recibida DATE
# CANTIDAD ORDENADA
LET transito = 0
LET fecha_ordenada=NULL
LET fecha_recibida=NULL
IF cod_inventario ='02' THEN
SELECT SUM(a.cantidad) INTO cantidad_ordenada
FROM cotb00015 a,cotb00014 b
WHERE (a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_Sec = pcodsec) AND
(a.num_oc = b.num_oc) AND (b.fech_oc <= fecha_transito) AND
a.status_t IS NULL
SELECT SUM(a.cantidad_2) INTO cantidad_recibida
FROM iptb00006 a
WHERE (a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_Sec = pcodsec) AND
(a.fecha <= fecha_transito) AND a.cod_mov IN (10) and
a.status_t IS NULL
LET transito = cantidad_ordenada - cantidad_recibida
SELECT MAX(b.fech_oc) INTO fecha_ordenada FROM cotb00014 b,cotb00015 a
WHERE (a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_Sec = pcodsec) AND
(a.num_oc = b.num_oc) AND (b.fech_oc <= fecha_transito) AND
a.status_t IS NULL
SELECT MAX(a.fecha) INTO fecha_recibida
FROM iptb00006 a
WHERE (a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND a.cod_Sec = pcodsec) AND
(a.fecha <= fecha_transito) AND a.cod_mov IN (10) and
a.status_t IS NULL
END IF
RETURN transito,fecha_ordenada,fecha_recibida
END FUNCTION
FUNCTION fechas_llegadas(pcodn,pcodgrupo,pcodtipo,pcodsec,fecha_transito)
DEFINE idx,pcodn,pcodgrupo,pcodtipo,pcodsec SMALLINT,
fecha_transito DATE
DEFINE busca_parcial DYNAMIC ARRAY OF RECORD
secuencia INT,
cod_n SMALLINT,
cod_grupo SMALLINT,
cod_tipo SMALLINT,
cod_sec SMALLINT,
cantidad DEC(12,5),
fech_emb DATE,
fech_ent DATE
END RECORD
OPEN WINDOW w1 WITH FORM "cofmfu009"
DECLARE b_fecha_parcial CURSOR FOR
SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec,a.cantidad,a.fech_emb,a.fech_ent
FROM cotb00025 a WHERE a.cod_n = pcodn AND a.cod_grupo = pcodgrupo AND a.cod_tipo = pcodtipo AND
a.cod_Sec = pcodsec AND a.fech_ent <= fecha_transito AND a.status_t IS NULL
LET idx = 1
FOREACH b_fecha_parcial INTO busca_parcial[idx].*
LET idx = idx + 1
END FOREACH
DISPLAY ARRAY busca_parcial TO s_parcial.*
CLOSE WINDOW w1
END FUNCTION