DECLARE @_PHAN_LOAI VARCHAR(24) = 'RTL', @_PHAN_LOAI_ID INTSET @_PHAN_LOAI_ID = (SELECT TOP(1) Id FROM dbo.B20CustomField3 WHERE Code = @_PHAN_LOAI)IF OBJECT_ID(N'TempDb..#ImportItem') IS NOT NULL DROP TABLE #ImportItemSELECT * INTO #ImportItemFROM dbo.[20250520_ItemRTL$]UNION ALLSELECT *FROM dbo.[20250520_ItemWHSL$] UPDATE #ImportItem SET NHOM_HANG = '1'+CONVERT(VARCHAR(24),NHOM_HANG), NGANH_HANG = '1'+CONVERT(VARCHAR(24),NGANH_HANG) WHERE PHAN_LOAI = 'RTL' UPDATE #ImportItem SET NHOM_HANG = '2'+CONVERT(VARCHAR(24),NHOM_HANG), NGANH_HANG = '2'+CONVERT(VARCHAR(24),NGANH_HANG) WHERE PHAN_LOAI = 'WHSL' UPDATE #ImportItem SET MA_HH = NULL WHERE MA_HH = 'null' UPDATE #ImportItem SET MA_NCC = NULL WHERE MA_NCC IN (N'#N/A',N'NULL') UPDATE #ImportItem SET MA_VT = TRIM(MA_VT), MA_HH = TRIM(MA_HH), BARCODE = TRIM(BARCODE), TEN_VT = TRIM(TEN_VT), DVT = TRIM(DVT), DVT1 = TRIM(DVT1), MA_NCC = UPPER(TRIM(MA_NCC)) UPDATE #ImportItem SET TEN_VT = REPLACE(TEN_VT, CHAR(10), ' ') UPDATE #ImportItem SET TEN_VT = REPLACE(TEN_VT, CHAR(13), ' ') UPDATE #ImportItem SET THUE_DAU_VAO = LOAI_THUE WHERE THUE_DAU_VAO = 'null' UPDATE #ImportItem SET THUE_DAU_RA = LOAI_THUE WHERE THUE_DAU_RA = 'null' IF OBJECT_ID(N'TempDb..#ImportItem1') IS NOT NULL DROP TABLE #ImportItem1 SELECT d.MA_VT AS ItemCode, d.MA_HH AS IntCode, d.BARCODE AS BarCode, d.TEN_VT AS ItemName, d.DVT AS Unit, d.DVT1 AS Unit0, d.TY_LE1 AS ConvertRate0, d.NGANH_HANG AS ItemCatgCode, d.NHOM_HANG AS ItemGroupCode, d.MA_NCC AS CustomerCode, ISNULL(d.GIA_MUA,0) AS PurchasePrice, ISNULL(d.GIA_GOC,0) AS OriginalPrice, ISNULL(d.GIA_VON,0) AS UnitCost, CONVERT(NUMERIC(18,4),ISNULL(d.GIA_BAN,0)) AS SalesPrice, d.LOAI_THUE AS LOAI_THUE, d.THUE_DAU_VAO, d.THUE_DAU_RA, CASE WHEN d.THUE_DAU_VAO IN ('K00') THEN '' WHEN d.THUE_DAU_VAO IN ('T00') THEN 'V00' WHEN d.THUE_DAU_VAO IN ('5','05','T05') THEN 'V05' WHEN d.THUE_DAU_VAO IN ('8','08','T08') THEN 'V08' WHEN d.THUE_DAU_VAO IN ('10','T10') THEN 'V10' ELSE '' END AS PurchaseTaxCode, CASE WHEN d.LOAI_THUE IN ('K00') THEN 'R00K' WHEN d.THUE_DAU_RA IN ('0') THEN 'R00' WHEN d.THUE_DAU_RA IN ('5') THEN 'R05A' WHEN d.THUE_DAU_RA IN ('8') THEN 'R08A' WHEN d.THUE_DAU_RA IN ('10') THEN 'R10A' ELSE '' END AS SalesTaxCode, supplier.Id AS SupplierId, ParentItem.Id AS ParentId, ItemCatg.Id AS ItemCatgId, ItemGroup.Id AS ItemGroupId, @_PHAN_LOAI_ID AS CustomFieldId3, d.PHAN_LOAI AS CustomFieldCode3 INTO #ImportItem1 FROM dbo.#ImportItem d LEFT OUTER JOIN dbo.vB20Customer supplier ON supplier.Code = d.MA_NCC AND supplier.CustomFieldCode3 = d.PHAN_LOAI LEFT OUTER JOIN dbo.B20ItemCatg ItemCatg ON ItemCatg.Code = d.NGANH_HANG LEFT OUTER JOIN dbo.B20ItemGroup ItemGroup ON ItemGroup.Code = d.NHOM_HANG LEFT OUTER JOIN dbo.B20Item ParentItem ON ParentItem.Code = d.NHOM_HANG WHERE d.PHAN_LOAI = @_PHAN_LOAI UPDATE #ImportItem1 SET Unit = UPPER(LEFT(Unit,1))+RIGHT(LOWER(Unit),LEN(Unit)-1), Unit0 = UPPER(LEFT(Unit0,1))+RIGHT(LOWER(Unit0),LEN(Unit0)-1) SELECT * FROM #ImportItem1DROP TABLE #ImportItem1DROP TABLE #ImportItem
KIỂM TRA TRÙNG CODE HOẶC BARCODE TRONG DANH MỤC VẬT TƯ
DECLARE @_PHAN_LOAI VARCHAR(24) = 'RTL', @_PHAN_LOAI_ID INTSET @_PHAN_LOAI_ID = (SELECT TOP(1) Id FROM dbo.B20CustomField3 WHERE Code = @_PHAN_LOAI);WITH cte AS ( SELECT Code, IntCode, BarCode, Name, SalesPrice, Unit, Loai_Ps, IsActive, CreatedBy, CreatedAt, ROW_NUMBER() OVER(PARTITION BY Code ORDER BY IsActive DESC) AS Stt_Order FROM dbo.B20Item WHERE CustomFieldId3 = @_PHAN_LOAI_ID)SELECT * FROM cte WHERE cte.Code IN (SELECT cte.Code FROM cte WHERE cte.Stt_Order >= 2) ORDER BY cte.Code ASC, cte.IsActive DESC;WITH cte AS ( SELECT Code, IntCode, BarCode, Name, SalesPrice, Unit, Loai_Ps, IsActive, CreatedBy, CreatedAt, ROW_NUMBER() OVER(PARTITION BY BarCode ORDER BY IsActive DESC) AS Stt_Order FROM dbo.B20Item WHERE CustomFieldId3 = @_PHAN_LOAI_ID)SELECT * FROM cte WHERE cte.BarCode IN (SELECT cte.BarCode FROM cte WHERE cte.Stt_Order >= 2) ORDER BY cte.BarCode ASC, cte.IsActive DESC
GIÁ NHẬP GẦN NHẤT TỪ NGÂN LONG
DECLARE @_PHAN_LOAI VARCHAR(24) = 'RTL', @_PHAN_LOAI_ID INTSET @_PHAN_LOAI_ID = (SELECT TOP(1) Id FROM dbo.B20CustomField3 WHERE Code = @_PHAN_LOAI)IF OBJECT_ID(N'TempDb..#AccDocPurchaseLatest') IS NOT NULL DROP TABLE #AccDocPurchaseLatest;WITH cte AS ( SELECT d.*, cust.Id AS CustomerId, Item.Id AS ItemId FROM dbo.[GIA_NHAP_GAN_NHAT$] d LEFT OUTER JOIN dbo.B20Item Item ON Item.Code = d.MAVT AND Item.CustomFieldId3 = @_PHAN_LOAI_ID LEFT OUTER JOIN dbo.B20Customer cust ON cust.Code = d.MANCC AND cust.CustomFieldId3 = @_PHAN_LOAI_ID)SELECT a.Id, a.BranchCode, a.Stt, a.DocCode, a.DocDate, a.CustomerId, cte.MANCC, a.ItemId, cte.MAVT, cte.HOADON_GIA AS HINH_THUC_GIA, cte.THUE_SUAT, cte.DONGIA AS DON_GIA, cte.TL_CK, IIF(ISNULL(cte.TL_CK,0)<>0, CONVERT(NUMERIC(18,5), (cte.DONGIA-(cte.DONGIA*(cte.TL_CK/100)))), CONVERT(NUMERIC(18,5), cte.DONGIA)) AS DON_GIA_SAU_CK, CAST(0 AS NUMERIC(18,5)) AS UnitCost, CAST(0 AS NUMERIC(18,5)) AS UnitCostInclVATINTO #AccDocPurchaseLatestFROM dbo.B30AccDocPurchaseLatest a INNER JOIN cte ON a.CustomerId = cte.CustomerId AND a.ItemId = cte.ItemIdWHERE ISNULL(a.Stt,'') = '' AND cte.HOADON_GIA IN ('01','02','03')ORDER BY a.DocDate DESCUPDATE #AccDocPurchaseLatestSET UnitCost = CASE WHEN HINH_THUC_GIA = '01' THEN DON_GIA_SAU_CK WHEN HINH_THUC_GIA = '02' THEN DON_GIA_SAU_CK WHEN HINH_THUC_GIA = '03' THEN ROUND(DON_GIA_SAU_CK/(1+(THUE_SUAT/100)),5) END, UnitCostInclVAT = CASE WHEN HINH_THUC_GIA = '01' THEN DON_GIA_SAU_CK WHEN HINH_THUC_GIA = '02' THEN ROUND(DON_GIA_SAU_CK*(1+(THUE_SUAT/100)),5) WHEN HINH_THUC_GIA = '03' THEN DON_GIA_SAU_CK ENDSELECT * FROM #AccDocPurchaseLatest ORDER BY DocDate DESC/*UPDATE dbo.B30AccDocPurchaseLatestSET PurchasePrice = ISNULL(b.DON_GIA,0), OriginalPurchasePrice = ISNULL(b.DON_GIA,0), UnitCost = ISNULL(b.UnitCost,0), OriginalUnitCost = ISNULL(b.UnitCost,0), UnitCostInclVAT = ISNULL(b.UnitCostInclVAT,0), OriginalUnitCostInclVAT = ISNULL(b.UnitCostInclVAT,0), DiscountRate = ROUND(ISNULL(b.TL_CK,0)/100,5), DocDate = b.DocDateFROM dbo.B30AccDocPurchaseLatest a INNER JOIN #AccDocPurchaseLatest b ON a.Id = b.IdWHERE ISNULL(a.Stt, '') = ''*/DROP TABLE #AccDocPurchaseLatest
GIÁ NHẬP, GIÁ VỐN GẦN NHẤT
DECLARE @_BranchCode VARCHAR(24) = 'A01', @_DocDate1 DATE = '2025-01-01', @_DocDate2 DATE = '2025-12-31'IF OBJECT_ID(N'TempDb..#AccDocPurchaseLatest') IS NOT NULL DROP TABLE #AccDocPurchaseLatestSELECT d.BranchCode, d.Stt, MAX(d.DocCode) AS DocCode, MAX(d.DocDate) AS DocDate, MAX(d.DocNo) AS DocNo, d.CustomerId, d.ItemId, SUM(d.Quantity) AS Quantity, SUM(d.Quantity9) AS Quantity9, -- Giá nhập ban đầu; MAX(d.OriginalUnitCost) AS OriginalPurchasePrice, MAX(d.UnitCost) AS PurchasePrice, MAX(d.DiscountRate) AS DiscountRate, -- Giá vốn sau chiết khấu và KHÔNG BAO GỒM THUẾ; CASE WHEN SUM(d.Quantity) = 0 THEN 0 ELSE CONVERT(NUMERIC(16,5), SUM(d.OriginalAmount)/SUM(d.Quantity)) END AS OriginalUnitCost, CASE WHEN SUM(d.Quantity) = 0 THEN 0 ELSE CONVERT(NUMERIC(16,5), SUM(d.Amount)/SUM(d.Quantity)) END AS UnitCost, -- Giá vốn sau chiết khấu và BAO GỒM THUẾ; CASE WHEN SUM(d.Quantity) = 0 THEN 0 ELSE CONVERT(NUMERIC(16,5), SUM(d.OriginalAmount+d.OriginalAmount3)/SUM(d.Quantity)) END AS OriginalUnitCostInclVAT, CASE WHEN SUM(d.Quantity) = 0 THEN 0 ELSE CONVERT(NUMERIC(16,5), SUM(d.Amount+d.Amount3)/SUM(d.Quantity)) END AS UnitCostInclVATINTO #AccDocPurchaseLatestFROM ( SELECT Ct.BranchCode, Ct.Stt, Ct.DocCode, Ct.DocDate, Ct.DocNo, Ct0.CustomerId, Ct0.WarehouseId, Ct0.ItemId, Ct0.Unit, Ct0.Quantity, Ct0.ConvertRate9, Ct0.Quantity9, Ct0.UnitCost, Ct0.OriginalUnitCost, Ct0.DiscountRate, Ct0.OriginalAmount9, Ct0.Amount9, Ct0.OriginalAmount, Ct0.Amount, Ct0.OriginalAmount3, Ct0.Amount3, Ct0.TaxCode, Ct0.TaxRate, tax.PriceIncludeTax, Ct.IsActive, ROW_NUMBER() OVER(PARTITION BY Ct.CustomerId, Ct0.ItemId ORDER BY Ct.DocDate DESC) AS Stt_Order FROM dbo.B30AccDocPurchase1 Ct0 INNER JOIN dbo.B30AccDocPurchase Ct ON Ct.Stt = Ct0.Stt INNER JOIN dbo.B00DocStatus DocStatus ON DocStatus.DocStatusKey = Ct.DocStatus LEFT OUTER JOIN dbo.B20Tax tax ON tax.Code = Ct0.TaxCode WHERE Ct.IsActive = 1 AND Ct.BranchCode = @_BranchCode AND Ct.DocCode = 'NM' AND Ct0.WarehouseId IS NOT NULL AND Ct.DocDate BETWEEN @_DocDate1 AND @_DocDate2 AND Ct0.Amount <> 0) dWHERE d.Stt_Order = 1GROUP BY d.BranchCode, d.Stt, d.CustomerId, d.ItemId /* THÊM MỚI DỮ LIỆU */ --INSERT INTO dbo.B30AccDocPurchaseLatest ( -- BranchCode, Stt, DocCode, DocDate, CustomerId, -- ItemId, OriginalPurchasePrice, PurchasePrice, -- OriginalUnitCost, UnitCost, -- OriginalUnitCostInclVAT, UnitCostInclVAT, -- DiscountRate, -- IsActive, CreatedBy, CreatedAt --) SELECT ct0.BranchCode, ct0.Stt, ct0.DocCode, ct0.DocDate, ct0.CustomerId, ct0.ItemId, ct0.OriginalPurchasePrice, ct0.PurchasePrice, ct0.OriginalUnitCost, ct0.UnitCost, ct0.OriginalUnitCostInclVAT, ct0.UnitCostInclVAT, ct0.DiscountRate, '1' AS Active, '-1' AS CreatedBy, GETUTCDATE() AS CreatedAt FROM #AccDocPurchaseLatest Ct0 LEFT OUTER JOIN dbo.B30AccDocPurchaseLatest lst ON Ct0.CustomerId = lst.CustomerId AND Ct0.ItemId = lst.ItemId WHERE ISNULL(lst.ItemId,0) = 0 ORDER BY lst.DocDate DESC /* CẬP NHẬT DỮ LIỆU */ SELECT a.BranchCode, a.CustomerId, a.ItemId, Item.Name AS ItemNam, Item.Unit AS Unit, a.UnitCost, b.UnitCost, a.UnitCostInclVAT, b.UnitCostInclVAT FROM dbo.B30AccDocPurchaseLatest a INNER JOIN dbo.B20Item Item ON Item.Id = a.ItemId INNER JOIN #AccDocPurchaseLatest b ON a.CustomerId = b.CustomerId AND a.ItemId = b.ItemId WHERE (a.UnitCost <> b.UnitCost) --UPDATE dbo.B30AccDocPurchaseLatest --SET UnitCost = b.UnitCost, OriginalUnitCost = b.OriginalUnitCost --FROM dbo.B30AccDocPurchaseLatest a -- INNER JOIN dbo.B20Item Item ON Item.Id = a.ItemId -- INNER JOIN #AccDocPurchaseLatest b ON a.CustomerId = b.CustomerId AND a.ItemId = b.ItemId --WHERE (a.UnitCost <> b.UnitCost) SELECT a.BranchCode, a.CustomerId, a.ItemId, Item.Name AS ItemNam, Item.Unit AS Unit, a.UnitCost, b.UnitCost, a.UnitCostInclVAT, b.UnitCostInclVAT FROM dbo.B30AccDocPurchaseLatest a INNER JOIN dbo.B20Item Item ON Item.Id = a.ItemId INNER JOIN #AccDocPurchaseLatest b ON a.CustomerId = b.CustomerId AND a.ItemId = b.ItemId WHERE (a.UnitCostInclVAT <> b.UnitCostInclVAT) --UPDATE dbo.B30AccDocPurchaseLatest --SET UnitCostInclVAT = b.UnitCostInclVAT, OriginalUnitCostInclVAT = b.OriginalUnitCostInclVAT --FROM dbo.B30AccDocPurchaseLatest a -- INNER JOIN dbo.B20Item Item ON Item.Id = a.ItemId -- INNER JOIN #AccDocPurchaseLatest b ON a.CustomerId = b.CustomerId AND a.ItemId = b.ItemId --WHERE (a.UnitCostInclVAT <> b.UnitCostInclVAT)DROP TABLE #AccDocPurchaseLatest
TỒN KHO ĐẦU KỲ
DECLARE @_PHAN_LOAI VARCHAR(24) = 'RTL', @_PHAN_LOAI_ID INT, @_DocDate DATE = '2024-12-31', @_FiscalYear VARCHAR(24) = '2025', @_Execute TINYINT = 0SET @_PHAN_LOAI_ID = (SELECT TOP(1) Id FROM dbo.B20CustomField3 WHERE Code = @_PHAN_LOAI) IF OBJECT_ID(N'TempDb..#OpenInventoryData') IS NOT NULL DROP TABLE #OpenInventoryData ;WITH cte AS ( SELECT inv.MA_KHO, wh.Id AS ID_KHO, inv.BARCODE, item.Id AS ID_VT, item.Name AS TEN_VT, ROUND(inv.SO_LUONG,0) AS SO_LUONG, ROUND(inv.GIA_TRI,0) AS GIA_TRI FROM dbo.[CAP_NHAT_TON_KHO_115$] inv LEFT OUTER JOIN dbo.B20Warehouse wh ON wh.Code = inv.MA_KHO AND wh.CustomFieldId3 = @_PHAN_LOAI_ID LEFT OUTER JOIN dbo.B20Item item ON item.Code = inv.BARCODE AND item.CustomFieldId3 = @_PHAN_LOAI_ID WHERE ISNULL(inv.BARCODE, '') <> '' ) SELECT @_DocDate AS DocDate, @_FiscalYear AS FiscalYear, 'A01' AS BranhCode, Wh.Id AS WarehouseId, Wh.Code AS WarehouseCode, Wh.Name AS WarehouseName, Item.Id AS ItemId, Item.Code AS ItemCode, Item.IntCode, a.BARCODE, Item.Name AS ItemName, Item.Unit AS ItemUnit, ISNULL(b.Quantity,0) AS OLDQuantity, CONVERT(NUMERIC(18,4), ROUND(ISNULL(a.SO_LUONG,0),0)) AS NEWQuantity, CAST(0 AS NUMERIC(18,4)) AS UnitCost, a.GIA_TRI AS Amount, a.GIA_TRI AS CloseAmount13, CAST(NULL AS VARCHAR(24)) AS InventoryId, b.InventoryId AS OLDInventoryId INTO #OpenInventoryData FROM cte AS a LEFT OUTER JOIN dbo.B30OpenInventory b ON a.ID_KHO = b.WarehouseId AND a.ID_VT = b.ItemId LEFT OUTER JOIN dbo.B20Warehouse Wh ON Wh.Code = a.MA_KHO AND Wh.CustomFieldId3 = @_PHAN_LOAI_ID LEFT OUTER JOIN dbo.B20Item Item ON Item.Code = a.BARCODE AND Item.CustomFieldId3 = @_PHAN_LOAI_ID ORDER BY wh.Code ASC, item.Name ASC UPDATE #OpenInventoryData SET UnitCost = IIF(ISNULL(NEWQuantity,0)<>0, ROUND(Amount/NEWQuantity,4), 0) IF @_Execute = 0 SELECT *, ROW_NUMBER() OVER(PARTITION BY BarCode ORDER BY ItemId DESC) AS Stt_Order FROM #OpenInventoryData ORDER BY ItemName ASC /* IF OBJECT_ID(N'TempDb..#OpenInventoryData1') IS NOT NULL DROP TABLE #OpenInventoryData1 SELECT * INTO #OpenInventoryData1 FROM #OpenInventoryData WHERE WarehouseId IS NOT NULL AND ISNULL(OLDInventoryId,'') <> '' AND ISNULL(OLDQuantity,0) <> ISNULL(NEWQuantity,0) SELECT * FROM #OpenInventoryData1 ORDER BY WarehouseCode ASC IF EXISTS(SELECT 1 FROM #OpenInventoryData1) AND @_Execute = 1 BEGIN -- CẬP NHẬT TỒN KHO ĐẦU KỲ NẾU TỒN TRƯỚC ĐÓ KHÁC VỚI HIỆN TẠI; UPDATE dbo.B30OpenInventory1 SET Quantity = ISNULL(b.NEWQuantity,0), CloseInventory13 = ISNULL(b.NEWQuantity,0), UnitCost = ISNULL(b.UnitCost,0), Amount = ISNULL(b.Amount,0), CloseAmount13 = ISNULL(b.Amount,0), ModifiedBy = -1, ModifiedAt = GETUTCDATE() FROM dbo.B30OpenInventory1 a INNER JOIN #OpenInventoryData1 b ON a.WarehouseId = b.WarehouseId AND a.ItemId = b.ItemId AND a.InventoryId = b.OLDInventoryId WHERE a.DocDate = @_DocDate AND [a].[Year] = @_FiscalYear AND a.WarehouseId = b.WarehouseId AND a.ItemId = b.ItemId AND a.InventoryId = b.OLDInventoryId UPDATE dbo.B30OpenInventory SET Quantity = b.Quantity, Amount = b.Amount FROM dbo.B30OpenInventory a INNER JOIN ( SELECT InventoryId, SUM(Quantity) AS Quantity, SUM(Amount) AS Amount FROM dbo.B30OpenInventory1 GROUP BY InventoryId ) b ON a.InventoryId = b.InventoryId INNER JOIN #OpenInventoryData1 c ON c.WarehouseId = a.WarehouseId AND c.ItemId = a.ItemId AND c.OLDInventoryId = a.InventoryId WHERE a.InventoryId = b.InventoryId END DROP TABLE #OpenInventoryData1 */ /* IF OBJECT_ID(N'TempDb..#OpenInventoryData2') IS NOT NULL DROP TABLE #OpenInventoryData2 SELECT * INTO #OpenInventoryData2 FROM #OpenInventoryData WHERE ISNULL(OLDInventoryId,'') = '' IF EXISTS(SELECT 1 FROM #OpenInventoryData2) AND @_Execute = 1 BEGIN -- THÊM MỚI TỒN KHO ĐẦU KỲ; DECLARE @_B30OpenInventoryId INT SET @_B30OpenInventoryId = IDENT_CURRENT('B10_ADC_Data.dbo.B30OpenInventory') INSERT INTO dbo.B30OpenInventory ( InventoryId, BranchCode, FiscalYear, WarehouseId, ItemId, Quantity, Amount ) SELECT RTRIM('0') + FORMAT(@_B30OpenInventoryId+ROW_NUMBER() OVER(ORDER BY d.FiscalYear, d.WarehouseId, d.ItemId ASC), '#000000') AS InventoryId ,d.BranhCode AS BranchCode, d.FiscalYear AS FiscalYear ,d.WarehouseId AS WarehouseId, d.ItemId AS ItemId ,SUM(d.NEWQuantity) AS Quantity, ISNULL(SUM(d.Amount),0) AS Amount FROM #OpenInventoryData2 d GROUP BY d.BranhCode, d.FiscalYear, d.WarehouseId, d.ItemId UPDATE d SET d.InventoryId = OpenInventory.InventoryId FROM #OpenInventoryData2 d INNER JOIN dbo.B30OpenInventory OpenInventory ON OpenInventory.BranchCode = d.BranhCode AND OpenInventory.FiscalYear = d.FiscalYear AND OpenInventory.WarehouseId = d.WarehouseId AND OpenInventory.ItemId = d.ItemId INSERT INTO dbo.B30OpenInventory1 ( BranchCode, InventoryId, Year, Stt_Ntxt, DocDate, WarehouseId, ItemId, Quantity, CloseInventory13, UnitCost, Amount, CloseAmount13 ) SELECT d.BranhCode AS BranchCode, MAX(d.InventoryId) AS InventoryId, d.FiscalYear AS [Year], '' AS Stt_Ntxt, MAX(d.DocDate) AS DocDate, d.WarehouseId AS WarehouseId, d.ItemId AS ItemId, SUM(d.NEWQuantity) AS Quantity, SUM(d.NEWQuantity) AS CloseInventory13, MAX(d.UnitCost) AS UnitCost, SUM(d.Amount) AS Amount, SUM(d.CloseAmount13) AS CloseAmount13 FROM #OpenInventoryData2 d WHERE ISNULL(d.InventoryId, '') <> '' GROUP BY d.BranhCode, d.FiscalYear, d.WarehouseId, d.ItemId END DROP TABLE #OpenInventoryData2 */DROP TABLE #OpenInventoryData
SỐ DƯ ĐẦU KỲ TÀI KHOẢN
DECLARE @_PHAN_LOAI VARCHAR(24) = 'WHSL', @_PHAN_LOAI_ID INT, @_BranchCode VARCHAR(24) = 'A01'SET @_PHAN_LOAI_ID = (SELECT TOP(1) Id FROM dbo.B20CustomField3 WHERE Code = @_PHAN_LOAI)/* INSERT INTO dbo.B30OpenBalance (BranchCode, [Year], Account, CustomerId, DebitAmount, DebitYearBal, CreditAmount, CreditYearBal, CustomFieldId3) */IF OBJECT_ID(N'TempDb..#OpenBalanceData') IS NOT NULL DROP TABLE #OpenBalanceDataSELECT @_BranchCode AS BranchCode, YEAR(GETDATE()) AS [Year], '13111' AS Account, cust.Id AS CustomerId, IIF(obl.SO_TIEN>0, ROUND(ABS(obl.SO_TIEN),0), 0) AS DebitAmount, IIF(obl.SO_TIEN>0, ROUND(ABS(obl.SO_TIEN),0), 0) AS DebitYearBal, IIF(obl.SO_TIEN<0, ROUND(ABS(obl.SO_TIEN),0), 0) AS CreditAmount, IIF(obl.SO_TIEN<0, ROUND(ABS(obl.SO_TIEN),0), 0) AS CreditYearBal, @_PHAN_LOAI_ID AS CustomFieldId3INTO #OpenBalanceDataFROM dbo.[20250618_OpenBalance$] obl LEFT OUTER JOIN dbo.B20Customer cust ON cust.Code = obl.MA_NCC AND cust.CustomFieldId3 = @_PHAN_LOAI_IDWHERE obl.PHAN_LOAI = @_PHAN_LOAI AND obl.TAI_KHOAN LIKE '131%'UNION ALLSELECT @_BranchCode AS BranchCode, YEAR(GETDATE()) AS [Year], '3311' AS Account, cust.Id AS CustomerId, IIF(obl.SO_TIEN<0, ROUND(ABS(obl.SO_TIEN),0), 0) AS DebitAmount, IIF(obl.SO_TIEN<0, ROUND(ABS(obl.SO_TIEN),0), 0) AS DebitYearBal, IIF(obl.SO_TIEN>0, ROUND(ABS(obl.SO_TIEN),0), 0) AS CreditAmount, IIF(obl.SO_TIEN>0, ROUND(ABS(obl.SO_TIEN),0), 0) AS CreditYearBal, @_PHAN_LOAI_ID AS CustomFieldId3FROM dbo.[20250618_OpenBalance$] obl LEFT OUTER JOIN dbo.B20Customer cust ON cust.Code = obl.MA_NCC AND cust.CustomFieldId3 = @_PHAN_LOAI_IDWHERE obl.PHAN_LOAI = @_PHAN_LOAI AND obl.TAI_KHOAN LIKE '331%'UNION ALLSELECT @_BranchCode AS BranchCode, YEAR(GETDATE()) AS [Year], '3311' AS Account, cust.Id AS CustomerId, IIF(obl.SO_TIEN<0, ROUND(ABS(obl.SO_TIEN),0), 0) AS DebitAmount, IIF(obl.SO_TIEN<0, ROUND(ABS(obl.SO_TIEN),0), 0) AS DebitYearBal, IIF(obl.SO_TIEN>0, ROUND(ABS(obl.SO_TIEN),0), 0) AS CreditAmount, IIF(obl.SO_TIEN>0, ROUND(ABS(obl.SO_TIEN),0), 0) AS CreditYearBal, @_PHAN_LOAI_ID AS CustomFieldId3FROM dbo.[20250618_OpenBalance$] obl LEFT OUTER JOIN dbo.B20Customer cust ON cust.Code = obl.MA_NCC AND cust.CustomFieldId3 = @_PHAN_LOAI_IDWHERE obl.PHAN_LOAI = @_PHAN_LOAI AND ISNULL(obl.TAI_KHOAN,'') = ''SELECT b.Id AS OpenBalanceID, a.*FROM dbo.#OpenBalanceData a LEFT OUTER JOIN dbo.B30OpenBalance b ON a.BranchCode = b.BranchCode AND a.Year = b.Year AND a.CustomFieldId3 = b.CustomFieldId3 AND a.Account = b.Account AND a.CustomerId = b.CustomerId--UPDATE dbo.B30OpenBalance--SET DebitAmount = ISNULL(b.DebitAmount,0), DebitYearBal = ISNULL(b.DebitYearBal,0),-- CreditAmount = ISNULL(b.CreditAmount,0), CreditYearBal = ISNULL(b.CreditYearBal,0)--FROM dbo.B30OpenBalance a-- INNER JOIN #OpenBalanceData b ON a.BranchCode = b.BranchCode AND a.Year = b.Year AND a.CustomFieldId3 = b.CustomFieldId3-- AND a.Account = b.Account AND a.CustomerId = b.CustomerId--WHERE a.Account = b.Account AND a.CustomerId = b.CustomerId/*INSERT INTO dbo.B30OpenBalance (BranchCode, [Year], Account, CustomerId, DebitAmount, DebitYearBal, CreditAmount, CreditYearBal, CustomFieldId3)SELECT a.BranchCode, a.[Year], a.Account, a.CustomerId, a.DebitAmount, a.DebitYearBal, a.CreditAmount, a.CreditYearBal, a.CustomFieldId3FROM dbo.#OpenBalanceData a LEFT OUTER JOIN dbo.B30OpenBalance b ON a.BranchCode = b.BranchCode AND a.Year = b.Year AND a.CustomFieldId3 = b.CustomFieldId3 AND a.Account = b.Account AND a.CustomerId = b.CustomerIdWHERE ISNULL(b.Id,0) = 0*/DROP TABLE #OpenBalanceData
KHÁC
/*-- KIỂM TRA TRẠNG THÁI DỮ LIỆU LIÊN KẾT TỰ ĐỘNG --SELECT BranchCode, DocCode, DocDate, DocNo, DocStatus, Stt, SourceKey, IsActiveFROM dbo.B30AccDocItem WHERE IsActive = 1 AND DocCode = 'DC' AND SourceKey IN (SELECT Stt FROM dbo.B30AccDocPurchase WHERE DocCode = 'NM' AND IsActive = 0)SELECT BranchCode, DocCode, DocDate, DocNo, DocStatus, Stt, SourceKey, IsActiveFROM dbo.B30AccDocPurchase WHERE IsActive = 1 AND DocCode = 'XT' AND SourceKey IN (SELECT Stt FROM dbo.B30AccDocItem WHERE DocCode = 'DC' AND IsActive = 0)*//*-- THÊM MỚI VẬT TƯ BÁN LẺ CHƯA TỒN TẠI TRONG BẢNG GIÁ BÁN LẺ ----INSERT INTO dbo.B20ItemPrice (ItemId, VariantCode, UnitPrice, BizDocId_SP, EffectiveDate, BizDocId_Seq, ValidUntilDate, TerritoryId, strUnitPrice)SELECT Item.Id AS ItemId, '' AS VariantCode, ISNULL(Item.SalesPrice,0) AS UnitPrice, '' AS BizDocId_SP, CONVERT(DATE, DATEADD(HOUR, 7, Item.CreatedAt), 103) AS EffectiveDate, NULL AS BizDocId_Seq, NULL AS ValidUntilDate, NULL AS TerritoryId, 'g' + FORMAT(CAST(ISNULL(Item.SalesPrice, 0) AS FLOAT), '') + 'd' AS strUnitPriceFROM dbo.vB20Item ItemWHERE IsGroup = 0 AND Item.IsActive = 1 AND CustomFieldCode3 = 'RTL' AND Id NOT IN (SELECT ItemId FROM dbo.B20ItemPrice)*/