/*
K3取消批次管理的SQL腳本(2010-02-05測試通過於K3 V10.4)
事因:由於期初啓用了批次管理,但後期進行退貨再加工流程時發現出現問題,無法流轉,所以,必須取消批次。由於已經存在大量業務數據,不可能再重新開始,只能通過底層語句進行批次的取消操作。
處理步驟:
找到4個和批次有關的表
分別是:ICInvInitial初始化數據表 ICBal存貨餘額表 poInvBal代管餘額表(不用理會也可) ICInvBal庫房存貨餘額表 ICInventory即時庫存(記錄可以清空,通過校對庫存,數據自動生成)
處理原則:相同庫房裏取消批次後,是否有相同記錄,有則合併
一些必要的字段:FItemID商品內碼 FstockID庫房內碼
這三個字段是需要清除數據的字段:FBatchNo批次號 FKFPeriod保質期 FKFDate生產/採購日期
因爲我們公司的帳套還同時啓用了保質期,所以最初合併記錄沒有到位,後期將保質期FKFPeriod數據清除,進行二次合併,通過。
以下是取消批次的腳本(沒有處理保質期),拷貝到查詢分析器中執行即可完成。
*/
--1.初始化表
--將數據彙總轉入臨時表
SELECT FBrNo,FPeriod,FStockID,FItemID,CONVERT(VARCHAR(200),'') AS FBatchNo,SUM(FBegQty) AS FBegQty,SUM(FReceive) AS FReceive,SUM(FSend) AS FSend,
SUM(FYtdReceive) AS FYtdReceive, SUM(FYtdSend) AS FYtdSend,SUM(FEndQty) AS FEndQty, SUM(FBegBal) AS FBegBal,
SUM(FDebit) AS FDebit,SUM(FCredit) AS FCredit,SUM(FYtdDebit) AS FYtdDebit,SUM(FYtdCredit) AS FYtdCredit,SUM(FEndBal) AS FEndBal,
SUM(FBegDiff) AS FBegDiff,SUM(FReceiveDiff) AS FReceiveDiff,SUM(FSendDiff) AS FSendDiff,FBillInterID,FUnitID,
SUM(FAuxBegQty) AS FAuxBegQty,SUM(FYtdBegQty) AS FYtdBegQty,SUM(FYtdAuxBegQty) AS FYtdAuxBegQty,SUM(FYtdAuxReceive) AS FYtdAuxReceive,
SUM(FYtdAuxSend) AS FYtdAuxSend,SUM(FYtdBegBal) AS FYtdBegBal,SUM(FYtdBegDiff) AS FYtdBegDiff, SUM(FYtdReceiveDiff) AS FYtdReceiveDiff,
SUM(FYtdSendDiff) AS FYtdSendDiff,FKFDate,FKFPeriod,FSPID,SUM(FSecBegQty) AS FSecBegQty,SUM(FSecReceive) As FSecReceive,
SUM(FSecSend) AS FSecSend,SUM(FSecYtdReceive) AS FSecYtdReceive,SUM(FSecYtdSend) AS FSecYtdSend,SUM(FSecEndQty) AS FSecEndQty,
FSecUnitID,FStockInDate,FAuxPropID,0 AS FSecCoefficient,SUM(FAuxUnitBegQty) AS FAuxUnitBegQty,SUM(FYtdAuxUnitBegQty) AS FYtdAuxUnitBegQty,
SUM(FYtdAuxUnitSend) AS FYtdAuxUnitSend,SUM(FYtdAuxUnitReceive) AS FYtdAuxUnitReceive,FSNListID
INTO #TempICInvInitial
FROM ICInvInitial GROUP BY FBrNo,FPeriod,FStockID,FItemID,FBillInterID,FUnitID,FKFDate,FKFPeriod,FSPID,FSecUnitID,FStockInDate,FAuxPropID,FSNListID
--清空表
TRUNCATE TABLE ICInvInitial
--轉回數據
INSERT INTO ICInvInitial SELECT * FROM #TempICInvInitial
--倒算輔助換算率
UPDATE ICInvInitial SET FSecCoefficient = CASE WHEN FSecBegQty<>0 THEN FBegQty/FSecBegQty ELSE 0 END
--刪除臨時表
DROP TABLE #TempICInvInitial
--2.餘額表
--將數據彙總轉入臨時表
SELECT FBrNo,FYear,FPeriod,FItemID,CONVERT(VARCHAR(200),'') AS FBatchNo,SUM(FBegQty) AS FBegQty,SUM(FReceive) AS FReceive,SUM(FSend) AS FSend,
SUM(FYtdReceive) AS FYtdReceive, SUM(FYtdSend) AS FYtdSend,SUM(FEndQty) AS FEndQty, SUM(FBegBal) AS FBegBal,
SUM(FDebit) AS FDebit,SUM(FCredit) AS FCredit,SUM(FYtdDebit) AS FYtdDebit,SUM(FYtdCredit) AS FYtdCredit,SUM(FEndBal) AS FEndBal,
SUM(FBegDiff) AS FBegDiff,SUM(FReceiveDiff) AS FReceiveDiff,SUM(FSendDiff) AS FSendDiff,SUM(FEndDiff) AS FEndDiff,
FBillInterID,FEntryID,FStockGroupID,SUM(FYtdReceiveDiff) AS FYtdReceiveDiff,SUM(FYtdSendDiff) AS FYtdSendDiff,
SUM(FSecBegQty) AS FSecBegQty,SUM(FSecReceive) As FSecReceive,SUM(FSecSend) AS FSecSend,SUM(FSecYtdReceive) AS FSecYtdReceive,
SUM(FSecYtdSend) AS FSecYtdSend,SUM(FSecEndQty) AS FSecEndQty,FStockInDate,FAuxPropID
INTO #TempICBal
FROM ICBal GROUP BY FBrNo,FYear,FPeriod,FItemID,FBillInterID,FEntryID,FStockGroupID,FStockInDate,FAuxPropID
--清空表
TRUNCATE TABLE ICBal
--轉回數據
INSERT INTO ICBal SELECT * FROM #TempICBal
--刪除臨時表
DROP TABLE #TempICBal
--3.庫存餘額表
--將數據彙總轉入臨時表
SELECT FBrNo,FYear,FPeriod,FStockID,FItemID,CONVERT(VARCHAR(200),'') AS FBatchNo,SUM(FBegQty) AS FBegQty,SUM(FReceive) AS FReceive,SUM(FSend) AS FSend,
SUM(FYtdReceive) AS FYtdReceive, SUM(FYtdSend) AS FYtdSend,SUM(FEndQty) AS FEndQty, SUM(FBegBal) AS FBegBal,
SUM(FDebit) AS FDebit,SUM(FCredit) AS FCredit,SUM(FYtdDebit) AS FYtdDebit,SUM(FYtdCredit) AS FYtdCredit,SUM(FEndBal) AS FEndBal,
SUM(FBegDiff) AS FBegDiff,SUM(FReceiveDiff) AS FReceiveDiff,SUM(FSendDiff) AS FSendDiff,SUM(FEndDiff) AS FEndDiff,FBillInterID,FStockPlaceID,
FKFPeriod,FKFDate,SUM(FYtdReceiveDiff) AS FYtdReceiveDiff,SUM(FYtdSendDiff) AS FYtdSendDiff,SUM(FSecBegQty) AS FSecBegQty,SUM(FSecReceive) As FSecReceive,
SUM(FSecSend) AS FSecSend,SUM(FSecYtdReceive) AS FSecYtdReceive,SUM(FSecYtdSend) AS FSecYtdSend,SUM(FSecEndQty) AS FSecEndQty,
FAuxPropID,FStockInDate
INTO #TempICInvBal
FROM ICInvBal GROUP BY FBrNo,FYear,FPeriod,FStockID,FItemID,FBillInterID,FStockPlaceID,FKFPeriod,FKFDate,FAuxPropID,FStockInDate
--清空表
TRUNCATE TABLE ICInvBal
--轉回數據
INSERT INTO ICInvBal SELECT * FROM #TempICInvBal
--刪除臨時表
DROP TABLE #TempICInvBal
-----------===================
--代管餘額表 可以不用處理
--將數據彙總轉入臨時表
SELECT FBrNo,FYear,FPeriod,FStockID,FItemID,CONVERT(VARCHAR(200),'') AS FBatchNo,SUM(FBegQty) AS FBegQty,
SUM(FReceive) AS FReceive,SUM(FSend) AS FSend,
SUM(FYtdReceive) AS FYtdReceive, SUM(FYtdSend) AS FYtdSend,SUM(FEndQty) AS FEndQty, SUM(FBegBal) AS FBegBal,
SUM(FDebit) AS FDebit,SUM(FCredit) AS FCredit,SUM(FYtdDebit) AS FYtdDebit,SUM(FYtdCredit) AS FYtdCredit,
SUM(FEndBal) AS FEndBal,
SUM(FBegDiff) AS FBegDiff,SUM(FReceiveDiff) AS FReceiveDiff,SUM(FSendDiff) AS FSendDiff,SUM(FEndDiff) AS FEndDiff,FBillInterID,
FKFPeriod,FKFDate,sum(FSPID) FSPID,sum(FDCSPID) FDCSPID,SUM(FSecBegQty) AS FSecBegQty,SUM(FSecReceive) As FSecReceive,
SUM(FSecSend) AS FSecSend,SUM(FSecYtdReceive) AS FSecYtdReceive,SUM(FSecYtdSend) AS FSecYtdSend,
SUM(FSecEndQty) AS FSecEndQty,
FAuxPropID
INTO #TemppoInvBal
FROM poInvBal GROUP BY FBrNo,FYear,FPeriod,FStockID,FItemID,FBillInterID,FKFPeriod,FKFDate,FAuxPropID
--清空表
TRUNCATE TABLE poInvBal
--轉回數據
INSERT INTO poInvBal SELECT * FROM #TemppoInvBal
--刪除臨時表
DROP TABLE #TemppoInvBal
--insert into poInvBal select * from poInvBalback
---
--4. *******************實倉即時庫存表
--將數據彙總轉入臨時表
SELECT FBrNo,FItemID,CONVERT(VARCHAR(200),'') AS FBatchNo,FStockID,SUM(FQty) AS FQty,SUM(FBal) AS FBal,
FStockPlaceID,FKFPeriod,FKFDate,SUM(FQtyLock) AS FQtyLock,FAuxPropID,SUM(FSecQty) AS FSecQty
INTO #TempIcInventory
FROM ICInventory GROUP BY FBrNo,FItemID,FStockID,FStockPlaceID,FKFPeriod,FKFDate,FAuxPropID
--清空表
TRUNCATE TABLE ICInventory
--轉回數據
INSERT INTO ICInventory SELECT * FROM #TempIcInventory
--刪除臨時表
DROP TABLE #TempIcInventory
--代管庫存表 虛倉即時庫存表 可以不用處理
--將數據彙總轉入臨時表
SELECT FBrNo,FItemID,CONVERT(VARCHAR(200),'') AS FBatchNo,FStockID,SUM(FQty) AS FQty,SUM(FBal) AS FBal,
FStockPlaceID,FKFPeriod,FKFDate,FStockTypeID,FAuxPropID,SUM(FSecQty) AS FSecQty
INTO #TempPOInventory
FROM POInventory GROUP BY FBrNo,FItemID,FStockID,FStockPlaceID,FKFPeriod,FKFDate,FStockTypeID,FAuxPropID
--清空表
TRUNCATE TABLE POInventory
--轉回數據
INSERT INTO POInventory SELECT * FROM #TempPOInventory
--刪除臨時表
DROP TABLE #TempPOInventory
--清除物料批次屬性 商品表裏
UPDATE t_ICItem SET FBatchManager = 0 WHERE FBatchManager = 1
-------- 處理批次問題,我們以下代碼並沒有執行,如果不好使的話,可以考慮執行以下代碼
--盤點備份表 無數據
--業務單據表
DECLARE @StrSql VARCHAR(2000)
DECLARE @TableName VARCHAR(100)
DECLARE @FieldName VARCHAR(100)
DECLARE Cur_Table CURSOR
FOR SELECT DISTINCT tt.FEntryTable,tf.FFieldName FROM ICTransactiontype tt
INNER JOIN (SELECT DISTINCT FID,FFieldName FROM ICTemplateentry WHERE FHeadCaption LIKE '批%') tf
ON tt.FTemplateID = tf.FID
OPEN Cur_Table
FETCH NEXT FROM Cur_Table INTO @TableName, @FieldName
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @StrSql = 'ALTER TABLE ' + @TableName + ' DISABLE TRIGGER ALL ' + CHAR(13)
SELECT @StrSql = @StrSql + 'UPDATE ' + @TableName + ' SET ' + @FieldName + ' = ''''' + CHAR(13)
SELECT @StrSql = @StrSql + 'ALTER TABLE ' + @TableName + ' ENABLE TRIGGER ALL '
EXEC(@StrSql)
FETCH NEXT FROM Cur_Table INTO @TableName , @FieldName
END
CLOSE Cur_Table
DEALLOCATE Cur_Table
DECLARE Cur_Table CURSOR
FOR SELECT DISTINCT tt.FHeadTable,tf.FFieldName FROM ICTransactiontype tt
INNER JOIN (SELECT DISTINCT FID,FFieldName FROM ICTemplate WHERE FCaption LIKE '批%') tf
ON tt.FTemplateID = tf.FID
OPEN Cur_Table
FETCH NEXT FROM Cur_Table INTO @TableName, @FieldName
WHILE @@FETCH_STATUS=0
BEGIN
SELECT @StrSql = 'ALTER TABLE ' + @TableName + ' DISABLE TRIGGER ALL ' + CHAR(13)
SELECT @StrSql = @StrSql + 'UPDATE ' + @TableName + ' SET ' + @FieldName + ' = ''''' + CHAR(13)
SELECT @StrSql = @StrSql + 'ALTER TABLE ' + @TableName + ' ENABLE TRIGGER ALL '
EXEC(@StrSql)
FETCH NEXT FROM Cur_Table INTO @TableName , @FieldName
END
CLOSE Cur_Table
DEALLOCATE Cur_Table
K3 取消批次管理的SQL腳本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
TIPOP 出貨單單頭
1/* 2===================================================================
wai631
2020-06-27 10:28:50
水晶報表A4紙打印兩張中一刀憑證
wai631
2020-02-25 01:10:51
TIPTOP ERP 5.X GP快捷鍵
wai631
2020-02-25 01:10:51
期初開帳反算材料和多層製成
wai631
2020-02-25 01:10:51
水晶報表中的百分數處理
wai631
2020-02-25 01:10:51
tiptop權限設置及新開用戶
wai631
2020-02-25 01:10:51
K3 批量更新BOM用量的
wai631
2018-08-29 04:38:03
K3 erp應收應付結賬時提示“單據重複”的處理
wai631
2018-08-29 04:38:02
樹形結構表怎麼用水晶報表來實現呢?
wai631
2018-08-29 04:37:59