InvoiceParser/sql/draft_907260825592619_2_invoice.sql

53 lines
2.5 KiB
MySQL
Raw Normal View History

2026-09-30 18:50:04 +00:00
-- Draft p1790621868706_fb5f7cf3 - SuperValu invoice 907260825592619
-- 2 of 3: InvoiceHeader + InvoiceDetail, the rows SaveService would write for this draft.
-- Vendor 1 = SuperValu (the draft has no vendor selected).
-- PO: next 10-digit number across InvoiceHeader and POHeader, same as the app.
USE posinv;
GO
SET XACT_ABORT ON;
BEGIN TRAN;
DECLARE @vendor int = 1,
@inv varchar(100) = '907260825592619',
@date datetime = '20260825',
@receiver int = 1, -- your emp_no from posbdat..Employees
@po varchar(12);
IF EXISTS (SELECT 1 FROM dbo.InvoiceHeader WITH (UPDLOCK, HOLDLOCK) WHERE InvoiceNumber = @inv AND Vendor = @vendor)
BEGIN
ROLLBACK;
RAISERROR('Invoice 907260825592619 already exists for vendor 1', 16, 1);
RETURN;
END
SELECT @po = RIGHT(REPLICATE('0', 10) + CAST(CASE WHEN InvoiceMax > POMax THEN InvoiceMax ELSE POMax END + 1 AS varchar(20)), 10)
FROM (SELECT
ISNULL((SELECT MAX(TRY_CONVERT(bigint, LTRIM(RTRIM(PONumber)))) FROM dbo.InvoiceHeader WITH (UPDLOCK, HOLDLOCK)
WHERE LTRIM(RTRIM(PONumber)) NOT LIKE '%[^0-9]%'), 0) AS InvoiceMax,
ISNULL((SELECT MAX(TRY_CONVERT(bigint, LTRIM(RTRIM(PONumber)))) FROM dbo.POHeader WITH (UPDLOCK, HOLDLOCK)
WHERE LTRIM(RTRIM(PONumber)) NOT LIKE '%[^0-9]%'), 0) AS POMax) AS M;
-- TotalCost = sum of line Totals (21.00 + 20.53)
-- TotalPrice = sum of Price * Pack * QuantityCase (only the qty-1 rotini line: 1.39 * 1 * 1)
-- Price_Cost_Change = 1 because script 3 creates a batch
INSERT INTO dbo.InvoiceHeader
(PONumber, PODate, InvoiceDate, Vendor, InvoiceNumber, VendorTotal, ReceivedInvoice, Price_Cost_Change,
TotalCost, TotalPrice, InvoiceQuantity, Salesman, Receiver, Deliverer)
VALUES
(@po, @date, @date, @vendor, @inv, 480.11, 1, 1,
41.53, 1.39, 1, '', @receiver, '');
-- Cost = case cost / pack, CaseCost = invoice cost, Price = unit retail
INSERT INTO dbo.InvoiceDetail
(PONumber, UPC, Cert_code, Description, Cost, Price, Total, Pack, CaseCost, QuantityCase, Size, UnitOfMeasure, PurchaseType)
VALUES
(@po, '0002680000550', 'F 645479', 'AMER/BEAUTY ROTINI', 0, 1.39, 21.00, 1, 0, 0, '16', 'OZ', 0),
(@po, '0088810925309', '3491452', 'HST GLAZED HNY BUN', 0, 2.49, 0, 184, 0, 0, NULL, 'OZ', 0),
(@po, '0019269900079', '4178665', 'SMYNG BLDK ROSE BG BWL 3.', 0, 3.29, 0, 824, 0, 0, '0.65', 'OZ', 0),
(@po, '0002680000550', '645479', 'AMER/BEAUTY ROTINI', 20.53, 1.39, 20.53, 1, 20.53, 1, '16', 'OZ', 0);
SELECT @po AS PONumber;
COMMIT;
GO