上传用户:zhpu1995
上传日期:2013-09-06
资源大小:61151k
文件大小:14k
源码类别:

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
  3. Begin VB.Form Oper_Depr 
  4.    BorderStyle     =   3  'Fixed Dialog
  5.    Caption         =   "固定资产计提折旧"
  6.    ClientHeight    =   2040
  7.    ClientLeft      =   45
  8.    ClientTop       =   330
  9.    ClientWidth     =   5370
  10.    HelpContextID   =   504002
  11.    Icon            =   "固定资产记提折旧.frx":0000
  12.    LinkTopic       =   "Form1"
  13.    LockControls    =   -1  'True
  14.    MaxButton       =   0   'False
  15.    MinButton       =   0   'False
  16.    ScaleHeight     =   2040
  17.    ScaleWidth      =   5370
  18.    ShowInTaskbar   =   0   'False
  19.    StartUpPosition =   2  '屏幕中心
  20.    Begin VB.Frame Frame1 
  21.       Height          =   2025
  22.       Left            =   0
  23.       TabIndex        =   0
  24.       Top             =   0
  25.       Width           =   5355
  26.       Begin VB.CommandButton QdCommand 
  27.          Caption         =   "确定(&O)"
  28.          Height          =   300
  29.          Left            =   2100
  30.          TabIndex        =   3
  31.          Top             =   1470
  32.          Width           =   1120
  33.       End
  34.       Begin VB.CommandButton QxCommand 
  35.          Cancel          =   -1  'True
  36.          Caption         =   "取消(&C)"
  37.          Height          =   300
  38.          Left            =   3360
  39.          TabIndex        =   2
  40.          Top             =   1470
  41.          Width           =   1120
  42.       End
  43.       Begin MSComctlLib.ProgressBar Bar_Depr 
  44.          Height          =   225
  45.          Left            =   90
  46.          TabIndex        =   1
  47.          Top             =   1140
  48.          Visible         =   0   'False
  49.          Width           =   5145
  50.          _ExtentX        =   9075
  51.          _ExtentY        =   397
  52.          _Version        =   393216
  53.          Appearance      =   1
  54.       End
  55.       Begin VB.Label Lbl_Clew 
  56.          Alignment       =   2  'Center
  57.          ForeColor       =   &H00404040&
  58.          Height          =   615
  59.          Left            =   480
  60.          TabIndex        =   4
  61.          Top             =   330
  62.          Width           =   4305
  63.       End
  64.    End
  65. End
  66. Attribute VB_Name = "Oper_Depr"
  67. Attribute VB_GlobalNameSpace = False
  68. Attribute VB_Creatable = False
  69. Attribute VB_PredeclaredId = True
  70. Attribute VB_Exposed = False
  71. '**********************************************
  72. '*    模 块 名 称 :固定资产计提折旧
  73. '*    功 能 描 述 :
  74. '*    程序员姓名  : 徐衍民
  75. '*    最后修改人  : 徐衍民
  76. '*    最后修改时间:2001/12/06
  77. '*    备        注:
  78. '**********************************************
  79. Dim DeprM As Double              '月折旧额
  80. Dim CardCode As String           '卡片编号
  81. Dim Rs_Temp As ADODB.Recordset   '打开数据集变量
  82. Dim rstemp As ADODB.Recordset    '打开数据集变量
  83. Dim RecTemp As ADODB.Recordset   '打开数据集变量
  84. Dim Sqlstr As String             '字符串变量
  85. Dim Card_Str As String           '字符串变量
  86. Dim YearTemp As Integer          '会计年度
  87. Dim PeriodTemp As Integer        '会计期间
  88. Dim FASortCode As String         '资产类别编号
  89. Dim DeptCode As String           '部门编号
  90. Dim FAValue As Double            '资产原值
  91. Dim DeprSum As Double            '资产累计折旧
  92. Dim MaxCode As String            '最大变动单号
  93. Dim FAStateCode As String        '资产使用状况编号
  94. Dim DeprMethod As String         '折旧方法
  95. Dim Job As Double                '工作总量
  96. Dim SalValue As Double           '净残值
  97. Dim Quantity As Double           '资产数量
  98. Dim Useyears As Double           '使用年限
  99. Dim Tsxx As String               '提示信息
  100. Dim job_temp As String                '工作量
  101. Private Sub Form_Load()          '窗体装入
  102.     
  103.     Set rstemp = New ADODB.Recordset
  104.     rstemp.Open "select top 1 * from gy_kjrlb where gdzcjzbz='0'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  105.     If Not rstemp.EOF Then
  106.         YearTemp = rstemp!KjYear
  107.         PeriodTemp = rstemp!Period
  108.         Tsxx = "请确认是否开始计提" + Trim(YearTemp) + "年" + Mid(Trim(str(100 + PeriodTemp)), 2, 2) + "月折旧?"
  109.         Tsxx = Tsxx + Chr(10) + Chr(10) + "(*1.本月工作量是否录入 2.资产增减变动是否完成)"
  110.         Lbl_Clew.Caption = Tsxx
  111.     End If
  112.     rstemp.Close
  113.     Set rstemp = Nothing
  114.     
  115. End Sub
  116. Private Sub QdCommand_Click()   '确定
  117.     
  118.     On Error GoTo Cwcl
  119.     Cw_DataEnvi.DataConnect.BeginTrans
  120.     
  121.     '固定资产计提折旧
  122.     Dim i As Integer
  123.     
  124.     i = 1
  125.     Set RecTemp = New ADODB.Recordset
  126.     Card_Str = "SELECT Gdzc_Card.* FROM Gdzc_Card LEFT OUTER JOIN Gdzc_State ON Gdzc_Card.FAStateCode = Gdzc_State.FaStateCode WHERE Gdzc_Card.WhetherNew = '0' AND Gdzc_State.DeprFlag = '1' AND Gdzc_Card.FactValue >= Gdzc_Card.SalValue"
  127.     RecTemp.Open Card_Str, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  128.     While Not RecTemp.EOF
  129.         Bar_Depr.Visible = True
  130.         Bar_Depr.Min = 0
  131.         Bar_Depr.Max = RecTemp.RecordCount
  132.         
  133.         FAStateCode = RecTemp!FAStateCode
  134.         FASortCode = RecTemp!FASortCode
  135.         DeptCode = RecTemp!DeptCode
  136.         job_temp = RecTemp!DeprMethod
  137.         CardCode = RecTemp!CardCode
  138.         Call Depr
  139.         Bar_Depr.Value = i
  140.         RecTemp.MoveNext
  141.         i = i + 1
  142.     Wend
  143.     RecTemp.Close
  144.     Set RecTemp = Nothing
  145.     
  146.     '将新增资产的新增标志赋成不是新增
  147.     Cw_DataEnvi.DataConnect.Execute ("update gdzc_Card set cardtype='0',deprflag='1'")
  148.     
  149.     Cw_DataEnvi.DataConnect.CommitTrans
  150.     Tsxx = "本月折旧计提完毕!"
  151.     Call Xtxxts(Tsxx, 0, 4)
  152.     Unload Me
  153.     Exit Sub
  154. Cwcl:
  155.     Cw_DataEnvi.DataConnect.RollbackTrans
  156.     Tsxx = "计提折旧过程中出现未知错误,程序自动恢复折旧前状态!"
  157.     Call Xtxxts(Tsxx, 0, 1)
  158.     Exit Sub
  159.     
  160. End Sub
  161. Private Sub QxCommand_Click()   '取消
  162.     Unload Me
  163. End Sub
  164. '固定资产折旧
  165. Function Depr()
  166.     '计提折旧原则:
  167.     '1.减少资产不再计提折旧
  168.     '2.本月新增资产不提折旧
  169.     '3.资产净值小于净残值不提折旧
  170.     '4.当月折旧额大于资产净值-残值时,折旧额=资产净值-净残值
  171.     '5.处于某不提折旧使用状况时,本月不提折旧
  172.     '6.按不同折旧方法计提本期折旧
  173.     '7.如果折旧金额为零,已计提折旧月份不变
  174.     '8.当资产使用年限进入最后两年时,资产折旧额在两年内每月平均分摊
  175.     '9.双倍余额法在满足下列条件时,改用直线法1折旧:
  176.     '  当年按双倍余额法计算的折旧额≤(资产净值-净残值)÷剩余使用年限
  177.     
  178.     '修改资产卡片表
  179.     Set Rs_Temp = New ADODB.Recordset
  180.     If job_temp = "04" Then
  181.         Sqlstr = "SELECT Gdzc_Card.*, Gdzc_JobQuantity.ActivitiesCurrently AS ActivitiesCurrently " _
  182.             & "FROM Gdzc_Card LEFT OUTER JOIN Gdzc_JobQuantity ON Gdzc_Card.CardCode = Gdzc_JobQuantity.CardCode " _
  183.             & "where Gdzc_Card.cardCode='" & Trim(CardCode) & "' and Gdzc_JobQuantity.[Year] =" & Val(YearTemp) & " AND Gdzc_JobQuantity.Period =" & Val(PeriodTemp)
  184.     Else
  185.         Sqlstr = "SELECT Gdzc_Card.* FROM Gdzc_Card where Gdzc_Card.cardCode='" & Trim(CardCode) & "'"
  186.     End If
  187.     Rs_Temp.Open Sqlstr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  188.     With Rs_Temp
  189.         If Not .EOF Then
  190.             DeprM = 0
  191.             If !DeprMethod = "07" Then
  192.                 If Val(Val(!FAValue) * Val((1 - Val(2 / Val(!Useyears))) ^ (Val(deprmothes)  12)) * Val(2 / Val(!Useyears))) <= Val(Val(Val(!FactValue) - Val(SalValue)) / Val(Val(!Useyears) - Val(!deprmothes)  12)) Then
  193.                     !DeprMethod = "02"
  194.                 End If
  195.             End If
  196.             If Val(Val(!Useyears) * 12 - Val(!deprmothes)) / 12 = 2 Then
  197.                 DeprM = Val(!FactValue) / 24
  198.                 !DeprMethod = "05"
  199.             Else
  200.                 Select Case !DeprMethod
  201.                     Case "01"   '不计提折旧:
  202.                         
  203.                     Case "02"   '直线法1:月折旧额=净资产÷剩余使用年限÷12
  204.                         DeprM = Val(!FactValue) / Val(Val(!Useyears) - Val(Val(!deprmothes) / 12)) / 12
  205.                     Case "03"   '直线法2:月折旧额=(资产原值-净残值)÷使用年限÷12
  206.                         DeprM = Val(Val(!FAValue) - Val(!SalValue)) / Val(!Useyears) / 12
  207.                     Case "04"   '工作量法:月折旧额=本期工作量×[(资产原值-净残值)÷工作总量]
  208.                         DeprM = Val(!ActivitiesCurrently) * Val(Val(Val(!FAValue) - Val(!SalValue)) / Val(!Activities))
  209.                     Case "05"   '固定折旧额法:月折旧额=资产原值×月折旧率
  210.                         DeprM = !DeprValue
  211.                     Case "06"   '年数总和法:月折旧额=(资产原值-净残值)×{(使用年限-折旧年限)÷[使用年限×(1+使用年限)÷2]÷12}
  212.                         DeprM = Val(Val(!FAValue) - Val(!SalValue)) * Val(Val(Val(!Useyears) - Val(Val(!deprmothes)  12)) / Val(Val(!Useyears) * Val(1 + Val(!Useyears)) / 2) / 12)
  213.                     Case "07"   '双倍余额法:月折旧额=年初资产净值×(2÷使用年限)÷12
  214.                         DeprM = Val(Val(!FAValue) * Val((1 - Val(2 / Val(!Useyears))) ^ (Val(deprmothes)  12)) * Val(2 / Val(!Useyears))) / 12
  215.                 End Select
  216.             End If
  217.             If DeprM > Val(Val(!FactValue) - Val(!SalValue)) Then
  218.                 DeprM = Val(Val(!FactValue) - Val(!SalValue))
  219.             End If
  220.             !DeprValue = Format(DeprM, "##0.00")
  221.             !deprmothes = Val(!deprmothes) + 1
  222.             !DeprSum = Format(Val(!DeprSum) + Val(DeprM), "##0.00")
  223.             !FactValue = Format(Val(!FactValue) - Val(DeprM), "##0.00")
  224.             !DeprFlag = True
  225.             !whetherNew = !whetherNew
  226.             DeprMethod = !DeprMethod
  227.             Job = !Activities
  228.             SalValue = !SalValue
  229.             Quantity = !FAQuantity
  230.             Useyears = !Useyears
  231.             FAValue = !FAValue
  232.             DeprSum = !DeprSum
  233.             .Update
  234.         End If
  235.     End With
  236.     Rs_Temp.Close
  237.     Set Rs_Temp = Nothing
  238.     
  239.     '修改资产明细表
  240.     Set Rs_Temp = New ADODB.Recordset
  241.     Sqlstr = "select * from Gdzc_DetailedForm where CardCode='" & Trim(CardCode) & "' and Year=" & Trim(YearTemp) & " and Period=" & Trim(PeriodTemp)
  242.     Rs_Temp.Open Sqlstr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  243.     If Not Rs_Temp.EOF Then
  244.         Rs_Temp!FAValueEnd = FAValue
  245.         Rs_Temp!DeprSumEnd = DeprSum
  246.         Rs_Temp!DeprValue = Format(DeprM, "##0.00")
  247.         Rs_Temp!DeprDate = Xtrq
  248.         Rs_Temp.Update
  249.     End If
  250.     Rs_Temp.Close
  251.     Set Rs_Temp = Nothing
  252.         
  253.     '修改资产汇总表
  254.     Set Rs_Temp = New ADODB.Recordset
  255.     Sqlstr = "select * from Gdzc_total where deptCode='" & Trim(DeptCode) & "' and FASortCode='" & Trim(FASortCode) & "' " _
  256.         & "and Year=" & YearTemp & " and period=" & PeriodTemp
  257.     Rs_Temp.Open Sqlstr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  258.     With Rs_Temp
  259.         If Not .EOF Then
  260.             !DeprSumEndM = Format(Val(!DeprSumEndM) + Val(DeprM), "##0.00")
  261.             !DeprSumInM = Format(Val(!DeprSumInM) + Val(DeprM), "##0.00")
  262.             .Update
  263.         End If
  264.     End With
  265.     Rs_Temp.Close
  266.     Set Rs_Temp = Nothing
  267.     
  268.     '生成资产变动记录
  269.     Call Vari
  270.     Set Rs_Temp = New ADODB.Recordset
  271.     Sqlstr = "select * from Gdzc_Variation"
  272.     Rs_Temp.Open Sqlstr, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  273.     With Rs_Temp
  274.         .AddNew
  275.         .Fields("VariVouCode") = MaxCode                 '变动单号
  276.         .Fields("CardCode") = Trim(CardCode)             '卡片编号
  277.         .Fields("Year") = Trim(YearTemp)                 '会计年度
  278.         .Fields("Period") = Trim(PeriodTemp)             '会计期间
  279.         .Fields("FAVariCode") = "00501"                     '资产变动(变动方式为“00501”时,专指资产累计折旧)
  280.         .Fields("VariationReason") = "资产累计折旧"      '资产变动原因
  281.         .Fields("DeptOld") = Trim(DeptCode)              '所属部门
  282.         .Fields("FAStateOld") = Trim(FAStateCode)        '使用状况
  283.         .Fields("DeprMethOld") = Trim(DeprMethod)        '折旧方法
  284.         .Fields("FASortOld") = Trim(FASortCode)          '资产类别编号
  285.         .Fields("FAValueOld") = CCur(FAValue)            '资产原值
  286.         .Fields("ActivitiesOld") = Val(Job)              '工作总量
  287.         .Fields("SalValueOld") = CCur(SalValue)          '净残值
  288.         .Fields("UseYearsOld") = Val(Useyears)           '使用年限
  289.         .Fields("FAQuantityOld") = Val(Quantity)         '资产数量
  290.         .Fields("SumDeprOld") = Format(CCur(Val(DeprSum) - Val(DeprM)), "##0.00")         '资产累计折旧
  291.         .Fields("DeptNew") = Trim(DeptCode)              '所属部门
  292.         .Fields("FAStateNew") = Trim(FAStateCode)        '使用状况
  293.         .Fields("DeprMethNew") = Trim(DeprMethod)        '折旧方法
  294.         .Fields("FASortNew") = Trim(FASortCode)          '资产类别编号
  295.         .Fields("FAValueNew") = CCur(FAValue)            '资产原值
  296.         .Fields("SumDeprNew") = CCur(DeprSum)            '资产累计折旧
  297.         .Fields("ActivitiesNew") = Val(Job)              '工作总量
  298.         .Fields("SalValueNew") = CCur(SalValue)          '净残值
  299.         .Fields("UseYearsNew") = Val(Useyears)           '使用年限
  300.         .Fields("FAQuantityNew") = Val(Quantity)         '资产数量
  301.         .Fields("Opreator") = Trim(Xtczy)                '操作员
  302.         .Fields("VariDate") = Xtrq
  303.         .Update
  304.     End With
  305.     Rs_Temp.Close
  306.     Set Rs_Temp = Nothing
  307.     
  308. End Function
  309. '变动单自动编号
  310. Function Vari()
  311.     
  312.     Dim Max_Code As Double                              '最大值数值变量
  313.     Set rstemp = New ADODB.Recordset
  314.     rstemp.Open "select max(VariVouCode) as Max_CardCode from Gdzc_Variation", Cw_DataEnvi.DataConnect, adOpenKeyset, adLockOptimistic
  315.     If Val(rstemp.Fields("Max_CardCode") & "") = 0 Then
  316.         Max_Code = 1
  317.     Else
  318.         Max_Code = Val(rstemp.Fields("Max_CardCode")) + 1
  319.     End If
  320.     rstemp.Close
  321.     Set rstemp = Nothing
  322.     
  323.     MaxCode = IIf(Max_Code < 10, "00000" & Max_Code, IIf(Max_Code < 100, "0000" & Max_Code, IIf(Max_Code < 1000, "000" & Max_Code, IIf(Max_Code < 10000, "00" & Max_Code, IIf(Max_Code < 100000, "0" & Max_Code, Max_Code)))))
  324. End Function