Ajuste de Inventario duplicado en 0 SMS

Lo primero que vamos a verificar es el siguiente query con el SKU que nos indiquen y agregamos las fechas

--Movimientos 
select * from invadjlog with (nolock)  where trandate >= '2024-07-08' and skuadjusted = 163770  order by skuadjusted asc
 
Select * from thd_sms_logs.dbo.systemlog with (nolock) where  logdate = '2024-07-08' and logmessage like '%163770%' order by logtime asc

--SELECT * FROM InventoryHistory WHERE Fecha >= '2024-06-01'   AND SKU = 201854    ORDER BY Fecha ASC

DECLARE @StoreNumber INT    = (SELECT StoreNumber FROM Store WHERE StoreType = 1)
DECLARE @StartDate   DATE   = '2024-06-01'
DECLARE @EndDate     DATE   = '2024-07-07'
DECLARE @SKU         BIGINT = 201854          

-------------------------------

            SELECT 'Movimientos',
         ial.TranDate, 
         ial.TranType, 
         CASE ial.TranType
            WHEN 1 THEN 'Envio Transferencias'
            WHEN 2 THEN 'Recibo Transferencias'
            WHEN 3 THEN 'RTV-Devolución a Proveedor'
            WHEN 4 THEN 'Stock Conversion (¿?)'
            WHEN 5 THEN CASE ial.ReasonCode WHEN 1 THEN 'Conteo Cíclico' ELSE 'Ajustes Inventario' END
            WHEN 6 THEN 'Recibo Inventario'
            WHEN 7 THEN 'DOM-Aumenta Reserva'
            WHEN 8 THEN 'DOM-Disminuye Reserva'
            WHEN 10 THEN 'On Hold (¿?)'
            WHEN 11 THEN 'Devolución Venta (¿?)'
            WHEN 12 THEN 'Recibos PO (MDC)'
            WHEN 13 THEN 'Reserved Qty (¿?)'
            WHEN 14 THEN 'Inventario Físico'
            ELSE 'Tipo Inválido'
         END AS Description,
         ial.ReasonCode, 
         ial.TranNumber, 
         ial.DocNumber, 
         ial.SKUAdjusted, 
         (CASE WHEN th.RequestStore in (8061, 8799) AND ial.TranType = 2 THEN 0 ELSE ial.QuantityAdj END) * 
         (CASE WHEN ial.ConvertSign = '+' AND ial.TranType <> 8 THEN 1 ELSE -1 END) AS QuantityAdj
  FROM InvAdjLog ial
  LEFT JOIN TransferHeader th ON ial.DocNumber = th.TransferNumber
            WHERE ial.TranDate BETWEEN @StartDate AND @EndDate
    AND ial.SKUAdjusted = @SKU
    AND ial.TranType NOT IN (3,6,12,7,8)
            ORDER BY ial.TranDate DESC
  
-------------------------------------

SELECT CASE WHEN td.Quantity > 0 THEN 'Venta TAKE' ELSE 'Devolución TAKE' END,
       td.TranDate,
       td.RegisterID,
       td.TranNumber,
       td.SKU, 
       (td.Quantity * -1) AS QtySold,
       td.Posted AS PostedDet,
       tt.Posted AS PostedHdr,
       CONVERT(BIT, CASE WHEN tt.RecType = 'D' THEN 1 ELSE 0 END) AS MarkedAsD
FROM TranDetail td
INNER JOIN TranTotal tt ON tt.RegisterID = td.RegisterID AND 
                                                                                      tt.TranNumber = td.TranNumber AND 
                                                                                      tt.TranDate   = td.TranDate
LEFT JOIN OrderDetail od ON od.OrderNumber  = td.DocNumber AND 
                            od.SKU          = td.SKU       AND 
                            od.OrdSeqNumber = td.SequenceNo
WHERE tt.RecType IN ('N', 'G')
  AND tt.TypeOfSale <> 88
  AND tt.OperatMode <> 1
  AND tt.TranDate BETWEEN @StartDate AND @EndDate
  AND (td.PickTake = 'T' OR -- SKUs en TAKE
      (td.PickTake = 'P' AND td.DocNumber = 0 AND tt.DocNumber = 0) OR  -- SKUs en PICK sin orden
      (tt.TypeOfSale BETWEEN 11 AND 25 AND tt.ReferenceNo__3 = '' AND td.Quantity < 0 AND td.PickTake IN ('P', 'D'))) -- SKUs Pick y Delivery devueltos sin folio Fleet
  AND NOT(td.SKU = 0 AND td.MiscAcct = 1 AND od.SKUDesc LIKE '(FMS)%') -- Cuotas que no son de Flete calculadas por Fleet
  AND td.SKU = @SKU
ORDER BY td.TranDate DESC

-------------------------

SELECT 'Confirmacion',
       fdh.IdFleet,
       fdh.OrderNo,
       td.TranDate,
       td.RegisterID,
       td.TranNumber,
       td.SKU, 
       (td.Quantity * -1) AS QtyConfirmed,
       fdd.CurQOHNew - fdd.CurQOHOld,
       CASE WHEN (td.Quantity * -1) = (fdd.CurQOHNew - fdd.CurQOHOld) THEN 'OK' ELSE 'DIFF' END,
       fdd.CurQOHOld,
       fdd.CurQOHNew
FROM TranDetailDOM td
LEFT JOIN FleetDelHdr fdh ON fdh.TranDate   = td.TranDate   AND
                              fdh.RegisterID = td.RegisterID AND
                              fdh.TranNumber = td.TranNumber
LEFT JOIN FleetDelDet fdd ON fdd.IdFleet = fdh.IdFleet AND
                              fdd.OrderNo = fdh.OrderNo AND
                              fdd.Sku     = td.SKU      AND
                             fdd.SeqNo   = td.SequenceNo
WHERE td.RegisterID = 81
            AND td.TranDate BETWEEN @StartDate AND @EndDate
  AND td.SKU = @SKU  
--GROUP BY td.SKU
ORDER BY td.TranDate DESC
  
-------------------------------------
--1. Acumular las cantidades de todos los skus de dlxferdet del embarque, llegas a ellos por la relación con shipmenttransfer
SELECT SH.ConfirmedOn,DXH.TransferNo,ST.shipmentnumber ,
       DXD.SKU SKU,
                           DXD.XferQty Cant, 
                           DXD.AvgCost CostoPromedio, 
       'Recibo Transferencia MDC'
FROM ShipmentHeader SH
INNER JOIN ShipmentTransfer ST ON ST.shipmentnumber = SH.shipmentnumber
INNER JOIN DlxFerHdr DXH  ON DXH.TransferNo  = ST.TransferNo
INNER JOIN DlxFerDet DXD  ON DXD.TransferNo = DXH.TransferNo
INNER JOIN ItemPLU IP ON IP.SKU = DXD.SKU
INNER JOIN ItemReplen IR ON IR.SKU = IP.SKU
WHERE SH.ConfirmedOn BETWEEN @StartDate AND @EndDate 
            AND SH.Status = 'C' 
            AND DXH.RecActionCod = 'F'
  AND DXD.SKU = @SKU
ORDER BY SH.ConfirmedOn DESC


--2. Acumular las cantidades de todos los skus de RCPartialPO llegas a ellos con la relación en shipmentreceive(no es necesario es directo)
SELECT sh.confirmedon,sr.lastreceiver,sr.shipmentNumber,
       rcp.SKU SKU,
                           (rcp.DailyTotRecd - rcp.VisDamageQty - rcp.Condamageqty) Cant, 
                           rcp.UnitCost CostoPromedio, 
                           'Recibo Parcial'
FROM RCPartialPO rcp 
INNER JOIN Shipmentheader  sh ON sh.shipmentnumber = rcp.shipmentnumber 
INNER JOIN shipmentreceive sr ON sr.shipmentnumber = sh.shipmentnumber AND sr.lastReceiver = rcp.lastreceiver
LEFT  JOIN ItemReplen      ir ON ir.SKU = rcp.SKU
INNER JOIN ItemPLU         IP ON IP.SKU = IR.SKU
WHERE sh.confirmedon BETWEEN @StartDate AND @EndDate 
            AND sh.Status = 'C' 
            AND    rcp.StatusRCDetail = 'F'
  AND rcp.SKU = @SKU
ORDER BY SH.ConfirmedOn DESC

--select top 1 * from  shipmentreceive

--3. Acumular las cantidades de todos los skus de RCDetail siempre y cuando no existan en RCPartialPO para el mismo numero de recibo LastReceiver  
SELECT sh.confirmedon,
       rcd.SKU SKU,
                           (rcd.DailyTotRecd - rcd.VisDamageQty - rcd.Condamageqty) Cant, 
                           rcd.UnitCost CostoPromedio, 
       'Recibo Completo'
FROM Shipmentheader sh 
INNER JOIN shipmentreceive sr  ON sr.shipmentnumber = sh.shipmentnumber
INNER JOIN RCheader        rch ON rch.LastReceiver = sr.LastReceiver 
INNER JOIN RCDetail        rcd ON rcd.LastReceiver = rch.LastReceiver 
INNER JOIN ItemPLU         IP  ON rcd.sku = ip.sku
INNER JOIN ItemReplen      IR  ON IP.SKU = IR.SKU
WHERE sh.confirmedon BETWEEN @StartDate AND @EndDate 
            AND sh.status = 'C' 
            AND rcd.sku NOT IN (SELECT sku FROM RCPartialPO WHERE RCPartialPO.LastReceiver = sr.LastReceiver) 
            AND rch.RecStatus = 'F'
  AND rcd.SKU = @SKU
ORDER BY SH.ConfirmedOn DESC


--4. Acumular recibo de POs de Proveedor Local.
SELECT rch.ReceiveDate,
       rcd.SKU SKU,
       --pd.TotQtyRecvd Cant,
                         rcd.DailyTotRecd Cant, 
                         rcd.UnitCost CostoPromedio, 
                         'Recibo Proveedor Local'
FROM RCHeader rch
INNER JOIN RCDetail rcd ON rcd.LastReceiver = rch.LastReceiver 
INNER JOIN ITEMPLU IP ON IP.SKU = rcd.sku
INNER JOIN ItemReplen ir ON ir.SKU = rcd.SKU
WHERE rch.RecType <> 'X' 
  AND rch.ReceiveDate BETWEEN @StartDate AND @EndDate
  AND rcd.SKU = @SKU
ORDER BY rch.ReceiveDate DESC

--select  * from  rcdetail  where  lastreceiver = '8642032233' and  sku = 415275

Verificamos la informacion que nos muestra en  LogMessage  y el ajuste que nos indica con la SKU  404155

En este caso verificamos que que nos indica este mensaje

Se ajusta el SKU: 404155 por -167.00 por código 1 en transacción: 1174316048. CurQOH antes: 167.000, CurQOH despues: 0.000

Verificamos que todos los ajustes se muestran con cantidad -167 depues 0 por lo que no se esta realizando un movimiento real vía sistema

Una vez que confirmamos que no se realizo un ajuste real

Corremos este query ingresando solo la TranNumber que vamos a dejar en este caso la 1174316048

select * from invadjlog with (nolock)  where trandate >= ‘2024-06-20’ and skuadjusted = 404155 and QuantityAdj = 167 and DocNumber <> 1174316048   order by TranTime asc

Ya que temenos los registros que vamos a eliminar  corremos este query quitando la DocNumber que vamos a dejar

Delete invadjlog   where trandate >= ‘2024-06-20’ and skuadjusted = 404155 and QuantityAdj = 167 and DocNumber <> 1174316048 

Una vez realizado el delete

Consultamos de nuevo el query

select * from invadjlog with (nolock)  where trandate >= ‘2024-06-20’ and skuadjusted = 404155  order by TranTime asc

Y validamos que ya solo se encuentre el ajuste real Ingresamos a Reporte generales –  Fin de día – reportes fin de día

Verificamos que en el reporte aparece los ajustes que se realizaron

97748861

Ingresamos cyberark y buscamos ispcw1174 ingresamos

Localizamos la siguiente ruta en DocRep > Temp>2024> buscamos el mes en este caso fue en junio (6)> y el dia en este caso el (20) > despues localizamos el archivo que queremos eliminar

Que seria el EndOfDay.IV1010_20_6_2024

Una vez que verifiquemos que reporte es en este caso EndOfDay.IV1010_20_6_2024 lo eliminamos

Ingresamos al navegador con la siguiente liga Modificamos Tienda (XXXX) y Fecha

http://ispcwXXXX/sms/api/v1/EODReport/?ReportName=EndOfDay.IV1010&processDate=2022-10-28&extension=PDF&lang=es-MX


Lo ejecutamos y lo dejamos que cargue

Ya nos aparece el archivo cargado correctamente y verificamos que ya no se encuentre el ajuste que se realizo mal

Contactamos a tienda validando que ya se encuentra de manera correcta

Loading

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *