20091119 工作
DECLARE @intLevel AS int -- 第幾期 階層
DECLARE @dtmDateStart int
DECLARE @dtmDateLast int
DECLARE @intCorpId tinyint
DECLARE @intZeroType int
SET @dtmDateStart= 20090101 -- 開始日期
SET @dtmDateLast = 20090131 -- 截止日期
SET @intCorpId=0
DECLARE @strCurType AS nvarchar(5), @intDigit AS tinyint -- 公司幣別, 小數顯示位數
SELECT @strCurType = CurType FROM tblCorp WHERE tblCorp.CorpID = @intCorpID -- 公司幣別
SELECT @intDigit = Digit FROM tblSysCurType WHERE tblSysCurType.CurType = @strCurType -- 小數顯示位數
------------------------------------------------------------------------------------------- 計算本期損益的金額 ------------------------------------------------------------------------------------------- S
/* 以#tmpBreakEven暫存虛帳戶的本期金額 */
CREATE TABLE #tmpBreakEven
(
[SbjtCode] [varchar] (13) NULL ,
[SrcAmt] [decimal](19, 4) NULL DEFAULT (0),
[Amt] [decimal](19, 4) NULL DEFAULT (0),
[iSign] [SmallInt] Not NULL DEFAULT (1)
)
---------------------------------------------------------------------------------------------------------------- 將符合條件的虛帳戶的金額暫存至 #tmpBreakEven S
---- 當篩選條件為所有傳票 S
/* 交易科目: 營業收入 */
INSERT INTO #tmpBreakEven (SbjtCode, SrcAmt,Amt)
SELECT viwSbjtBalDayALL.SbjtCode, Sum(viwSbjtBalDayALL.SrcCreditAmt) - Sum(viwSbjtBalDayALL.SrcDebitAmt) , Sum(viwSbjtBalDayALL.CreditAmt) - Sum(viwSbjtBalDayALL.DebitAmt)
FROM viwSbjtBalDayALL, tblSbjt
WHERE (viwSbjtBalDayALL.CorpID = @intCorpID) AND
(viwSbjtBalDayALL.BalDate BETWEEN @dtmDateStart AND @dtmDateLast) AND
(viwSbjtBalDayALL.SbjtCode = tblSbjt.SbjtCode) AND (tblSbjt.SbjtCate = 4) AND(viwSbjtBalDayALL.IsCloseVoch=0)
GROUP BY viwSbjtBalDayALL.SbjtCode
---- 當篩選條件為所有傳票 E
/* 若零值顯示= 否, 則刪除金額為0之交易科目 */
IF @intZeroType = 2
BEGIN
DELETE FROM #tmpBreakEven WHERE #tmpBreakEven.Amt = 0
END
/* 設定統制階層從第五層開始 */
--SET @intLevel = 6
SELECT @intLevel = max(SbjtLevel) FROM tblSbjt
-- Loren 2003/07/14 --03 / 04
UPDATE a SET a.iSign = CASE WHEN b.DebitType =2 THEN 1 ELSE -1 END
FROM #tmpBreakEven a,tblSbjt b
WHERE a.SbjtCode = b.SbjtCode AND ( b.SbjtCate = 7 OR b.SbjtCate = 9)
-- Loren 2003/07/14 --04 / 04
/* 計算統制科目之金額 */
WHILE @intLevel > 1
BEGIN
INSERT INTO #tmpBreakEven (SbjtCode, SrcAmt,Amt)
SELECT ParentSbjtCode,Sum(#tmpBreakEven.SrcAmt*#tmpBreakEven.iSign),Sum(#tmpBreakEven.Amt*#tmpBreakEven.iSign)
FROM tblSbjt, #tmpBreakEven
WHERE (tblSbjt.SbjtLevel = @intLevel) AND (tblSbjt.SbjtCode = #tmpBreakEven.SbjtCode) AND (tblSbjt.SbjtCate >3)
GROUP BY ParentSbjtCode
--將第5類營業成本的總額-59類營業毛利的總額,因為59類營業毛利要另外算
DECLARE @curAmt decimal(19, 4), @curSrcAmt decimal(19, 4)
SELECT @curAmt = Amt,@curSrcAmt = SrcAmt FROM #tmpBreakEven WHERE #tmpBreakEven.SbjtCode='59'
Update #tmpBreakEven SET Amt=Amt-IsNull(@curAmt,0),SrcAmt=SrcAmt-IsNull(@curSrcAmt,0) Where #tmpBreakEven.SbjtCode='5'
SET @intLevel=@intLevel-1
END
/* 若零值顯示=否, 則補足第一層之統制科目 */
IF @intZeroType = 2
BEGIN
INSERT INTO #tmpBreakEven (SbjtCode,SrcAmt, Amt)
SELECT tblSbjt.SbjtCode, 0 ,0
FROM tblSbjt
WHERE tblSbjt.SbjtCate > 3
AND tblSbjt.LeafType = 1
AND tblSbjt.SbjtLevel = 1
AND tblSbjt.SbjtCode NOT IN
(
SELECT #tmpBreakEven.SbjtCode
FROM #tmpBreakEven
)
END
SELECT * FROM #tmpBreakEven
drop table #tmpBreakEven
DECLARE @dtmDateStart int
DECLARE @dtmDateLast int
DECLARE @intCorpId tinyint
DECLARE @intZeroType int
SET @dtmDateStart= 20090101 -- 開始日期
SET @dtmDateLast = 20090131 -- 截止日期
SET @intCorpId=0
DECLARE @strCurType AS nvarchar(5), @intDigit AS tinyint -- 公司幣別, 小數顯示位數
SELECT @strCurType = CurType FROM tblCorp WHERE tblCorp.CorpID = @intCorpID -- 公司幣別
SELECT @intDigit = Digit FROM tblSysCurType WHERE tblSysCurType.CurType = @strCurType -- 小數顯示位數
------------------------------------------------------------------------------------------- 計算本期損益的金額 ------------------------------------------------------------------------------------------- S
/* 以#tmpBreakEven暫存虛帳戶的本期金額 */
CREATE TABLE #tmpBreakEven
(
[SbjtCode] [varchar] (13) NULL ,
[SrcAmt] [decimal](19, 4) NULL DEFAULT (0),
[Amt] [decimal](19, 4) NULL DEFAULT (0),
[iSign] [SmallInt] Not NULL DEFAULT (1)
)
---------------------------------------------------------------------------------------------------------------- 將符合條件的虛帳戶的金額暫存至 #tmpBreakEven S
---- 當篩選條件為所有傳票 S
/* 交易科目: 營業收入 */
INSERT INTO #tmpBreakEven (SbjtCode, SrcAmt,Amt)
SELECT viwSbjtBalDayALL.SbjtCode, Sum(viwSbjtBalDayALL.SrcCreditAmt) - Sum(viwSbjtBalDayALL.SrcDebitAmt) , Sum(viwSbjtBalDayALL.CreditAmt) - Sum(viwSbjtBalDayALL.DebitAmt)
FROM viwSbjtBalDayALL, tblSbjt
WHERE (viwSbjtBalDayALL.CorpID = @intCorpID) AND
(viwSbjtBalDayALL.BalDate BETWEEN @dtmDateStart AND @dtmDateLast) AND
(viwSbjtBalDayALL.SbjtCode = tblSbjt.SbjtCode) AND (tblSbjt.SbjtCate = 4) AND(viwSbjtBalDayALL.IsCloseVoch=0)
GROUP BY viwSbjtBalDayALL.SbjtCode
---- 當篩選條件為所有傳票 E
/* 若零值顯示= 否, 則刪除金額為0之交易科目 */
IF @intZeroType = 2
BEGIN
DELETE FROM #tmpBreakEven WHERE #tmpBreakEven.Amt = 0
END
/* 設定統制階層從第五層開始 */
--SET @intLevel = 6
SELECT @intLevel = max(SbjtLevel) FROM tblSbjt
-- Loren 2003/07/14 --03 / 04
UPDATE a SET a.iSign = CASE WHEN b.DebitType =2 THEN 1 ELSE -1 END
FROM #tmpBreakEven a,tblSbjt b
WHERE a.SbjtCode = b.SbjtCode AND ( b.SbjtCate = 7 OR b.SbjtCate = 9)
-- Loren 2003/07/14 --04 / 04
/* 計算統制科目之金額 */
WHILE @intLevel > 1
BEGIN
INSERT INTO #tmpBreakEven (SbjtCode, SrcAmt,Amt)
SELECT ParentSbjtCode,Sum(#tmpBreakEven.SrcAmt*#tmpBreakEven.iSign),Sum(#tmpBreakEven.Amt*#tmpBreakEven.iSign)
FROM tblSbjt, #tmpBreakEven
WHERE (tblSbjt.SbjtLevel = @intLevel) AND (tblSbjt.SbjtCode = #tmpBreakEven.SbjtCode) AND (tblSbjt.SbjtCate >3)
GROUP BY ParentSbjtCode
--將第5類營業成本的總額-59類營業毛利的總額,因為59類營業毛利要另外算
DECLARE @curAmt decimal(19, 4), @curSrcAmt decimal(19, 4)
SELECT @curAmt = Amt,@curSrcAmt = SrcAmt FROM #tmpBreakEven WHERE #tmpBreakEven.SbjtCode='59'
Update #tmpBreakEven SET Amt=Amt-IsNull(@curAmt,0),SrcAmt=SrcAmt-IsNull(@curSrcAmt,0) Where #tmpBreakEven.SbjtCode='5'
SET @intLevel=@intLevel-1
END
/* 若零值顯示=否, 則補足第一層之統制科目 */
IF @intZeroType = 2
BEGIN
INSERT INTO #tmpBreakEven (SbjtCode,SrcAmt, Amt)
SELECT tblSbjt.SbjtCode, 0 ,0
FROM tblSbjt
WHERE tblSbjt.SbjtCate > 3
AND tblSbjt.LeafType = 1
AND tblSbjt.SbjtLevel = 1
AND tblSbjt.SbjtCode NOT IN
(
SELECT #tmpBreakEven.SbjtCode
FROM #tmpBreakEven
)
END
SELECT * FROM #tmpBreakEven
drop table #tmpBreakEven
浙公网安备 33010602011771号