liberar reserva SCC

Para cancelar la reserva de la SCC y que permita seleccionar los sku´s restantes en la SCC hay que ejecutar el siguiente query:

DECLARE @SCC nvarchar(10) = '875401796' -- se cambia solo el valor el núm de SCC
DECLARE @SEND int = 0; -- se deja en 0 para consultar si tiene reserva, en caso de que tenga se cambia el valor a 1 y se ejecuta, se vuelve a dejar en 0
-- para consulta, una vez generado se espera 1 minuto y ya debe de estar liberada la reserva
DECLARE @ID int, @skuid int,@store int,@ReservedQty int, @Order int = 13578;
SELECT @store = Storenumber FROM Store(nolock) where StoreType = 1

SELECT agreementid,itemstatus, skuid,QuantityRequired,QuantitySold,ReservedQty 
Into #SCCItems 
from Store_SccItems (NOLOCK) where agreementid = @SCC and ReservedQty > 0

--Select * from #SCCItems;

Select scc.agreementid,scc.SkuId, 
Avg(scc.ReservedQty)'ReservedQty',SUM(ISNULL(CASE WHEN oh.TypeOfsale != 0 THEN od.QuantityOrd ELSE 0 END,0)) 'SCCLock', row_number() over (partition by agreementid order by SkuId asc) as ID
--oh.CreateDate,oh.ordernumber,OH.sccid,Oh.OrderStatus 'OrderStatusHeader',oh.TypeOfSale, Od.OrderStatus 'OrderStatusDetail',Od.sccPriceAgreementId,OD.SKU, od.QuantityOrd
INTO #OrderSku
from #SCCItems scc
LEFT JOIN Orderdetail od (NOLOCK) ON od.SKU = scc.SkuId and od.sccPriceAgreementId = @SCC and od.OrderStatus != 'F'
LEFT JOIN OrderHeader oh (NOLOCK) ON oh.ordernumber = od.ordernumber AND oh.OrderStatus != 'F' 
Where scc.skuid is not NULL and ReservedQty > 0 --and not oh.ordernumber is null
GROUP BY scc.agreementid,scc.skuid

DELETE #OrderSku Where ReservedQty-SCCLock = 0
SELECT agreementid,SkuId,ReservedQty,SCCLock FROM #OrderSku

WHILE EXISTS(SELECT TOP 1 * FROM #OrderSku)
BEGIN
DECLARE @xml nvarchar(max) = '<ProPricingAgreement Code="{SCC}" StoreCode="{STORE}" DocNumber="{DOC}"><Products><Product ProductCode="{SKU}" SoldQty="-{RESERVED}"/></Products></ProPricingAgreement>'

	SELECT TOP 1 @ID = ID, @skuid = SkuId,@ReservedQty=ReservedQty-SCCLock FROM #OrderSku ORDER BY ID ASC
	
	--SELECT ID, SkuId, ReservedQty-SCCLock FROM #OrderSku where id = @ID

	SET @xml = REPLACE(@xml, '{SCC}', @SCC)
	SET @xml = REPLACE(@xml, '{STORE}', @STORE)
	SET @xml = REPLACE(@xml, '{DOC}', @Order)
	SET @xml = REPLACE(@xml, '{SKU}', @skuid)
	SET @xml = REPLACE(@xml, '{RESERVED}', @ReservedQty)

	SELECT @XML

	IF(@SEND = 1)
	BEGIN
		SELECT 'ENVIO DE CANCELACION DE RESERVA' 'Action'
		Insert OutboundIntegrationTransactions Values (1,248,'ProPricingAgreementUpdateSoldQty',@XML,1,null,null,null,null,0,1,current_timestamp)
		UPDATE Store_SccItems SET ReservedQty = 0 where agreementid = @SCC and ReservedQty > 0 and skuid = @skuid

	END

	DELETE #OrderSku WHERE ID = @ID
END



DROP TABLE #SCCItems
DROP TABLE #OrderSku

1.- El único valor que se modifica es el número de la SCC

2.- Se ejecuta así tal cual con el valor de SEND = 0 para consultar si se tiene reserva.

3.- Si se observa que se tiene reserva y se quiere liberar hay que cambiar el valor de SEND a 1 y ejecutar el query nuevamente. Esto nos va cancelar la reserva.

4.- Si se vuelve a ejecutar con SEND = 0 (a modo de consulta) ya no debería de mostrar información. Posterior a esto solo hay que esperar 1 minuto y ya se verán reflejadas las cantidades completas de la SCC.

Loading

Deja una respuesta

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