81 lines
4.5 KiB
SQL
81 lines
4.5 KiB
SQL
-- 盘点流程增强:盘点明细关联库存明细,支持盘点出库/PDA盘点/盘点回库/差异审核。
|
|
-- 可重复执行;请先在 FTC25009-WMS 的测试库验证后再上生产。
|
|
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail', 'stock_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail ADD stock_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail', 'stock_detail_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail ADD stock_detail_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail', 'cargo_space_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail ADD cargo_space_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail', 'cargo_space_name') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail ADD cargo_space_name nvarchar(255) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail', 'warehouse_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail ADD warehouse_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail', 'warehouse_name') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail ADD warehouse_name nvarchar(255) NULL;
|
|
|
|
IF OBJECT_ID('dbo.pd_stockpd_detail_finish', 'U') IS NOT NULL
|
|
BEGIN
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail_finish', 'stock_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail_finish ADD stock_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail_finish', 'stock_detail_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail_finish ADD stock_detail_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail_finish', 'cargo_space_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail_finish ADD cargo_space_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail_finish', 'cargo_space_name') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail_finish ADD cargo_space_name nvarchar(255) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail_finish', 'warehouse_id') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail_finish ADD warehouse_id nvarchar(80) NULL;
|
|
IF COL_LENGTH('dbo.pd_stockpd_detail_finish', 'warehouse_name') IS NULL
|
|
ALTER TABLE dbo.pd_stockpd_detail_finish ADD warehouse_name nvarchar(255) NULL;
|
|
END;
|
|
|
|
EXEC(N'
|
|
UPDATE pdd
|
|
SET pdd.stock_id = bsd.stock_id,
|
|
pdd.stock_detail_id = bsd.detail_id,
|
|
pdd.cargo_space_id = bs.cargo_space_id,
|
|
pdd.cargo_space_name = bcs.cargo_space_name,
|
|
pdd.warehouse_id = bs.warehouse_id,
|
|
pdd.warehouse_name = ISNULL(NULLIF(bs.warehouse_name, ''''), bw.warehouse_name)
|
|
FROM dbo.pd_stockpd_detail pdd
|
|
INNER JOIN dbo.bas_stock bs ON bs.tray_code = pdd.tray_code
|
|
INNER JOIN dbo.bas_stock_detail bsd ON bsd.stock_id = bs.stock_id AND bsd.product_id = pdd.product_id
|
|
LEFT JOIN dbo.bas_cargo_space bcs ON bcs.cargo_space_id = bs.cargo_space_id
|
|
LEFT JOIN dbo.bas_warehouse bw ON bw.warehouse_id = bs.warehouse_id
|
|
WHERE (pdd.stock_detail_id IS NULL OR pdd.stock_detail_id = '''')
|
|
AND ISNULL(bsd.quantity, 0) > 0
|
|
');
|
|
|
|
IF OBJECT_ID('dbo.pd_stockpd_detail_finish', 'U') IS NOT NULL
|
|
BEGIN
|
|
EXEC(N'
|
|
UPDATE pdd
|
|
SET pdd.stock_id = bsd.stock_id,
|
|
pdd.stock_detail_id = bsd.detail_id,
|
|
pdd.cargo_space_id = bs.cargo_space_id,
|
|
pdd.cargo_space_name = bcs.cargo_space_name,
|
|
pdd.warehouse_id = bs.warehouse_id,
|
|
pdd.warehouse_name = ISNULL(NULLIF(bs.warehouse_name, ''''), bw.warehouse_name)
|
|
FROM dbo.pd_stockpd_detail_finish pdd
|
|
INNER JOIN dbo.bas_stock bs ON bs.tray_code = pdd.tray_code
|
|
INNER JOIN dbo.bas_stock_detail bsd ON bsd.stock_id = bs.stock_id AND bsd.product_id = pdd.product_id
|
|
LEFT JOIN dbo.bas_cargo_space bcs ON bcs.cargo_space_id = bs.cargo_space_id
|
|
LEFT JOIN dbo.bas_warehouse bw ON bw.warehouse_id = bs.warehouse_id
|
|
WHERE (pdd.stock_detail_id IS NULL OR pdd.stock_detail_id = '''')
|
|
AND ISNULL(bsd.quantity, 0) > 0
|
|
');
|
|
END;
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_pd_stockpd_detail_stock_detail_id' AND object_id = OBJECT_ID('dbo.pd_stockpd_detail'))
|
|
EXEC(N'CREATE INDEX IX_pd_stockpd_detail_stock_detail_id ON dbo.pd_stockpd_detail(stock_detail_id)');
|
|
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_pd_stockpd_detail_stock_id' AND object_id = OBJECT_ID('dbo.pd_stockpd_detail'))
|
|
EXEC(N'CREATE INDEX IX_pd_stockpd_detail_stock_id ON dbo.pd_stockpd_detail(stock_id)');
|
|
|
|
IF OBJECT_ID('dbo.pd_stockpd_detail_finish', 'U') IS NOT NULL
|
|
BEGIN
|
|
IF NOT EXISTS (SELECT 1 FROM sys.indexes WHERE name = 'IX_pd_stockpd_detail_finish_stock_detail_id' AND object_id = OBJECT_ID('dbo.pd_stockpd_detail_finish'))
|
|
EXEC(N'CREATE INDEX IX_pd_stockpd_detail_finish_stock_detail_id ON dbo.pd_stockpd_detail_finish(stock_detail_id)');
|
|
END;
|