• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MSCRM janmson
MS CRM顾问及二次开发
博客园    首页    新随笔    联系   管理    订阅  订阅

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
posted @ 2009-11-19 17:27  韩建兴  阅读(128)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3