Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
control_sql_-_check_inventory_received_levels_on_pos [2022/07/07 11:14] orichards [SQL Query to Reduce Received without changing Billed Qty] |
control_sql_-_check_inventory_received_levels_on_pos [2022/07/07 11:20] (current) shendrix [SQL Query to Reduce Received without changing Billed Qty] |
||
|---|---|---|---|
| Line 178: | Line 178: | ||
| ELSE | ELSE | ||
| SELECT InventoryID, | SELECT InventoryID, | ||
| - | |||
| </ | </ | ||
| Line 184: | Line 183: | ||
| ===== SQL Query to Reduce Received without changing Billed Qty ===== | ===== SQL Query to Reduce Received without changing Billed Qty ===== | ||
| - | '' | + | <code sql> |
| - | < | + | |
| - | '' | + | DECLARE @CommitChanges BIT; |
| - | | + | SET @CommitChanges = 0; |
| + | DECLARE @EntryDate DateTime; | ||
| + | SET @EntryDate = GETDATE(); | ||
| + | DECLARE @Description VARCHAR(255); | ||
| + | SET @Description = ' | ||
| + | DECLARE @Notes VARCHAR(MAX); | ||
| + | SET @Notes = ' | ||
| + | DECLARE @ModifiedDate DateTime; | ||
| + | SET @ModifiedDate = getdate(); | ||
| + | DECLARE @ModifiedByUser VARCHAR(100); | ||
| + | SET @ModifiedByUser = ' | ||
| + | DECLARE @ModifiedByComputer VARCHAR(100); | ||
| + | SET @ModifiedByComputer = ' | ||
| + | DECLARE @T TABLE(InventoryID INT, | ||
| + | | ||
| + | ItemName VARCHAR(100), | ||
| | | ||
| | | ||
| Line 193: | Line 207: | ||
| | | ||
| | | ||
| - | + | ; | |
| - | '' | + | -- Insert all of the inventory items into the temp table |
| - | + | INSERT INTO @T | |
| - | </ | + | (InventoryID, |
| - | '' | + | SELECT I.ID, I.PartID, I.ItemName, I.DivisionID, |
| - | + | FROM | |
| - | ''; | + | LEFT JOIN Part P ON P.ID = I.PartID |
| - | < | + | WHERE P.PartType = 0 AND I.IsGroup = 0 AND P.TrackInventory = 1 |
| - | '' | + | ; |
| - | + | -- Set the current inventory items | |
| - | '' | + | UPDATE @T |
| - | + | SET CurrentReceivedOnly = ISNULL( IL.QuantityReceivedOnly, | |
| - | </ | + | FROM @T T |
| - | '' | + | LEFT JOIN ( SELECT |
| - | + | ||
| - | '' | + | |
| - | < | + | |
| - | '' | + | |
| , ROUND( SUM( ISNULL( QuantityReceivedOnly, | , ROUND( SUM( ISNULL( QuantityReceivedOnly, | ||
| | | ||
| | | ||
| GROUP BY InventoryID ) IL ON IL.InventoryID = T.InventoryID | GROUP BY InventoryID ) IL ON IL.InventoryID = T.InventoryID | ||
| - | + | ; | |
| - | '' | + | -- Compute the actual on order quantity and set the value |
| - | + | DECLARE @ActualReceivedOnly TABLE (InventoryID INT PRIMARY KEY, Amount FLOAT); | |
| - | </ | + | INSERT INTO @ActualReceivedOnly |
| - | '' | + | SELECT I.ID InventoryID, |
| - | + | SUM( CASE WHEN TD.UnitID = P.UnitID THEN TD.POQuantityReceivedOnly | |
| - | ''; | + | |
| - | < | + | |
| - | '' | + | |
| ELSE ( TD.POQuantityReceivedOnly * ISNULL(IC.FxUpper / IC.FxLower, 1 ) ) | ELSE ( TD.POQuantityReceivedOnly * ISNULL(IC.FxUpper / IC.FxLower, 1 ) ) | ||
| END ) POQuantityReceivedOnly | END ) POQuantityReceivedOnly | ||
| - | + | FROM | |
| - | '' | + | ( CASE WHEN ItemClassTypeID = 12076 THEN (SELECT TOP 1 PartID FROM CatalogItem WHERE ID = ItemID) |
| - | + | ||
| - | </ | + | |
| - | '' | + | |
| - | + | ||
| - | '' | + | |
| - | < | + | |
| - | '' | + | |
| ELSE ItemID | ELSE ItemID | ||
| END ) PartID, | END ) PartID, | ||
| Line 243: | Line 243: | ||
| WarehouseID | WarehouseID | ||
| FROM VendorTransDetail | FROM VendorTransDetail | ||
| - | WHERE ID> 0 | + | WHERE ID > 0 |
| AND ItemID IS NOT NULL | AND ItemID IS NOT NULL | ||
| AND StationID IN (108, 109) -- Received, Partially Received | AND StationID IN (108, 109) -- Received, Partially Received | ||
| Line 255: | Line 255: | ||
| CASE | CASE | ||
| WHEN PartInventoryConversion.ConversionFormula IS NULL THEN 1.00 | WHEN PartInventoryConversion.ConversionFormula IS NULL THEN 1.00 | ||
| - | WHEN PATINDEX( ' | + | WHEN PATINDEX( ' |
| ELSE CAST(CAST(PartInventoryConversion.ConversionFormula AS VARCHAR(100)) AS FLOAT) | ELSE CAST(CAST(PartInventoryConversion.ConversionFormula AS VARCHAR(100)) AS FLOAT) | ||
| END FxUpper, | END FxUpper, | ||
| CASE | CASE | ||
| WHEN PartInventoryConversion.ConversionFormula IS NULL THEN 1.00 | WHEN PartInventoryConversion.ConversionFormula IS NULL THEN 1.00 | ||
| - | WHEN PATINDEX( ' | + | WHEN PATINDEX( ' |
| ELSE 1.00 | ELSE 1.00 | ||
| END FxLower | END FxLower | ||
| FROM PartInventoryConversion ) IC ON IC.PartID = TD.PartID AND IC.UnitID = TD.UnitID | FROM PartInventoryConversion ) IC ON IC.PartID = TD.PartID AND IC.UnitID = TD.UnitID | ||
| - | + | WHERE TH.TransactionType = 7 AND I.ID IS NOT NULL -- PO, we don't filter on status since we're filtering on line item statuses. | |
| - | '' | + | GROUP BY I.ID |
| - | + | ; | |
| - | </ | + | UPDATE @T |
| - | '' | + | SET ActualReceivedOnly = ISNULL( CR.Amount, 0 ) |
| - | + | FROM @T T | |
| - | '' | + | LEFT JOIN @ActualReceivedOnly CR ON CR.InventoryID = T.InventoryID |
| - | < | + | ; |
| - | '' | + | -- Delete all inventory records that do not require a change from the temp table |
| - | + | DELETE FROM @T | |
| - | '' | + | WHERE CurrentReceivedOnly = ActualReceivedOnly |
| - | + | ; | |
| - | </ | + | IF @CommitChanges = 1 |
| - | '' | + | BEGIN |
| - | + | -- Compute the IDs for the new records | |
| - | ''; | + | DECLARE @LastJournalID INT; |
| - | + | SET @LastJournalID = (SELECT MAX(ID) FROM Journal); | |
| - | - '' | + | |
| - | '' | + | |
| - | + | ||
| - | < | + | |
| - | '' | + | |
| UPDATE T | UPDATE T | ||
| SET New_JournalID = RowNum + @LastJournalID | SET New_JournalID = RowNum + @LastJournalID | ||
| Line 321: | Line 316: | ||
| FROM @T T | FROM @T T | ||
| ; | ; | ||
| - | + | END | |
| - | '' | + | ELSE |
| + | | ||
| </ | </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | '' | ||
| - | |||
| - | < | ||
| - | '' | ||
| - | |||
| - | '' | ||
| - | |||
| - | </ | ||
| - | |||
| - | '' | ||
| - | |||
| - | |||
| ====== Version Information ====== | ====== Version Information ====== | ||
| * Revised : 07/2018 | * Revised : 07/2018 | ||