135 lines
3.2 KiB
MySQL
135 lines
3.2 KiB
MySQL
|
|
/* =========================================================
|
||
|
|
VERIFICACIÓN STORY #9
|
||
|
|
Expedición -> EnTransito + reservas de stock
|
||
|
|
========================================================= */
|
||
|
|
|
||
|
|
SET NOCOUNT ON;
|
||
|
|
|
||
|
|
DECLARE @ExpeditionNumber VARCHAR(50) = 'X-00000054'; -- cambiar
|
||
|
|
|
||
|
|
DECLARE @ExpeditionId INT;
|
||
|
|
|
||
|
|
SELECT @ExpeditionId = id
|
||
|
|
FROM dbo.PhLSM_ExpeditionHeaders
|
||
|
|
WHERE expeditionnumber = @ExpeditionNumber;
|
||
|
|
|
||
|
|
IF @ExpeditionId IS NULL
|
||
|
|
BEGIN
|
||
|
|
RAISERROR('Expedición no encontrada',16,1);
|
||
|
|
RETURN;
|
||
|
|
END
|
||
|
|
|
||
|
|
PRINT 'ExpeditionId: ' + CAST(@ExpeditionId AS VARCHAR);
|
||
|
|
|
||
|
|
-------------------------------------------------------------
|
||
|
|
-- 1. CABECERA
|
||
|
|
-------------------------------------------------------------
|
||
|
|
PRINT '===== CABECERA =====';
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
id,
|
||
|
|
expeditionnumber,
|
||
|
|
issuedate,
|
||
|
|
status,
|
||
|
|
observations
|
||
|
|
FROM dbo.PhLSM_ExpeditionHeaders
|
||
|
|
WHERE id = @ExpeditionId;
|
||
|
|
|
||
|
|
|
||
|
|
-------------------------------------------------------------
|
||
|
|
-- 2. DETALLES
|
||
|
|
-------------------------------------------------------------
|
||
|
|
PRINT '===== DETALLES =====';
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
d.id,
|
||
|
|
d.expedition_id,
|
||
|
|
d.product_id,
|
||
|
|
d.stockitem_id,
|
||
|
|
d.quantity,
|
||
|
|
d.batch,
|
||
|
|
d.serial,
|
||
|
|
d.expiration
|
||
|
|
FROM dbo.PhLSM_ExpeditionDetails d
|
||
|
|
WHERE d.expedition_id = @ExpeditionId
|
||
|
|
ORDER BY d.id;
|
||
|
|
|
||
|
|
|
||
|
|
-------------------------------------------------------------
|
||
|
|
-- 3. RESERVAS CREADAS
|
||
|
|
-------------------------------------------------------------
|
||
|
|
PRINT '===== RESERVAS =====';
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
r.id,
|
||
|
|
r.source_type,
|
||
|
|
r.source_id,
|
||
|
|
r.stockitem_id,
|
||
|
|
r.reserved_quantity,
|
||
|
|
r.status,
|
||
|
|
r.createdat
|
||
|
|
FROM dbo.PhLSM_StockReservation r
|
||
|
|
WHERE r.source_type = 1
|
||
|
|
AND r.source_id = @ExpeditionId
|
||
|
|
ORDER BY r.id;
|
||
|
|
|
||
|
|
|
||
|
|
-------------------------------------------------------------
|
||
|
|
-- 4. STOCK ITEMS AFECTADOS
|
||
|
|
-------------------------------------------------------------
|
||
|
|
PRINT '===== STOCK ITEMS =====';
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
si.id,
|
||
|
|
si.product_id,
|
||
|
|
si.location_id,
|
||
|
|
si.quantity,
|
||
|
|
si.reserved_quantity,
|
||
|
|
(si.quantity - si.reserved_quantity) AS available
|
||
|
|
FROM dbo.PhLSM_StockItem si
|
||
|
|
WHERE si.id IN
|
||
|
|
(
|
||
|
|
SELECT stockitem_id
|
||
|
|
FROM dbo.PhLSM_ExpeditionDetails
|
||
|
|
WHERE expedition_id = @ExpeditionId
|
||
|
|
);
|
||
|
|
|
||
|
|
|
||
|
|
-------------------------------------------------------------
|
||
|
|
-- 5. VALIDACIÓN DETALLE VS RESERVA
|
||
|
|
-------------------------------------------------------------
|
||
|
|
PRINT '===== VALIDACION =====';
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
d.id AS detail_id,
|
||
|
|
d.stockitem_id,
|
||
|
|
d.quantity AS requested,
|
||
|
|
r.reserved_quantity,
|
||
|
|
CASE
|
||
|
|
WHEN r.id IS NULL THEN 'FALTA RESERVA'
|
||
|
|
WHEN r.reserved_quantity <> d.quantity THEN 'CANTIDAD DISTINTA'
|
||
|
|
ELSE 'OK'
|
||
|
|
END AS resultado
|
||
|
|
FROM dbo.PhLSM_ExpeditionDetails d
|
||
|
|
LEFT JOIN dbo.PhLSM_StockReservation r
|
||
|
|
ON r.source_id = d.expedition_id
|
||
|
|
AND r.stockitem_id = d.stockitem_id
|
||
|
|
AND r.source_type = 1
|
||
|
|
AND r.status = 1
|
||
|
|
WHERE d.expedition_id = @ExpeditionId;
|
||
|
|
|
||
|
|
|
||
|
|
-------------------------------------------------------------
|
||
|
|
-- 6. CHEQUEO DE DUPLICADOS
|
||
|
|
-------------------------------------------------------------
|
||
|
|
PRINT '===== DUPLICADOS =====';
|
||
|
|
|
||
|
|
SELECT
|
||
|
|
stockitem_id,
|
||
|
|
COUNT(*) AS cantidad
|
||
|
|
FROM dbo.PhLSM_StockReservation
|
||
|
|
WHERE source_type = 1
|
||
|
|
AND source_id = @ExpeditionId
|
||
|
|
AND status = 1
|
||
|
|
GROUP BY stockitem_id
|
||
|
|
HAVING COUNT(*) > 1;
|