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

企业管理

开发平台:

Visual Basic

  1. VERSION 5.00
  2. Begin VB.Form JS_FrmSelectObject 
  3.    BorderStyle     =   1  'Fixed Single
  4.    Caption         =   "成本对象"
  5.    ClientHeight    =   1755
  6.    ClientLeft      =   45
  7.    ClientTop       =   330
  8.    ClientWidth     =   5250
  9.    Icon            =   "成本计算_选择成本对象.frx":0000
  10.    LinkTopic       =   "Form1"
  11.    MaxButton       =   0   'False
  12.    MinButton       =   0   'False
  13.    ScaleHeight     =   1755
  14.    ScaleWidth      =   5250
  15.    StartUpPosition =   2  '屏幕中心
  16.    Begin VB.Frame Frame1 
  17.       Caption         =   "选择成本对象"
  18.       Height          =   1635
  19.       Left            =   60
  20.       TabIndex        =   0
  21.       Top             =   60
  22.       Width           =   5115
  23.       Begin VB.ComboBox Combo_CostObject 
  24.          Height          =   300
  25.          Left            =   1170
  26.          Style           =   2  'Dropdown List
  27.          TabIndex        =   3
  28.          Top             =   480
  29.          Width           =   3705
  30.       End
  31.       Begin VB.CommandButton Cmd_Cancel 
  32.          Caption         =   "取消(&C)"
  33.          Height          =   300
  34.          Left            =   3750
  35.          TabIndex        =   2
  36.          Top             =   1020
  37.          Width           =   1120
  38.       End
  39.       Begin VB.CommandButton Cmd_Enter 
  40.          Caption         =   "确定(&O)"
  41.          Height          =   300
  42.          Left            =   2580
  43.          TabIndex        =   1
  44.          Top             =   1020
  45.          Width           =   1120
  46.       End
  47.       Begin VB.Label Label1 
  48.          AutoSize        =   -1  'True
  49.          Caption         =   "成本对象:"
  50.          Height          =   180
  51.          Left            =   300
  52.          TabIndex        =   4
  53.          Top             =   540
  54.          Width           =   810
  55.       End
  56.    End
  57. End
  58. Attribute VB_Name = "JS_FrmSelectObject"
  59. Attribute VB_GlobalNameSpace = False
  60. Attribute VB_Creatable = False
  61. Attribute VB_PredeclaredId = True
  62. Attribute VB_Exposed = False
  63. '*******************************************************
  64. '*    模 块 名 称 :对象选择
  65. '*    功 能 描 述 :对象选择
  66. '*    程序员姓名  :xjl
  67. '*    最后修改人  :xjl
  68. '*    最后修改时间:2002/1/22
  69. '*    备        注:
  70. '*******************************************************
  71. Dim Combo_CostObjectCode() As String        '成本对象
  72. Dim IsCombo As Boolean
  73. Dim Str_ObjectCode As String                '对象编码
  74. Dim Str_ObjectName As String                '对象名称
  75. Private Sub Cmd_Cancel_Click()                  '取消
  76.     Unload Me
  77. End Sub
  78. Private Sub Cmd_Enter_Click()                   '确定
  79.     '成本归集
  80.     If JS_FrmSelectObject.Combo_CostObject.Tag = "Gather" Then
  81.         If Combo_CostObject.ListCount <= 0 Then
  82.             Unload Me
  83.             Exit Sub
  84.         End If
  85.         Str_ObjectCode = Trim(Combo_CostObjectCode(Combo_CostObject.ListIndex))
  86.         Str_ObjectName = Trim(Combo_CostObject.List(Combo_CostObject.ListIndex))
  87.         Unload Me
  88.         Call CostGather                         '成本归集
  89.         Str_ObjectCode = ""
  90.         IsCombo = False
  91.     End If
  92.     
  93.     '成本分配
  94.     If JS_FrmSelectObject.Combo_CostObject.Tag = "Scatter" Then
  95.         If Combo_CostObject.ListCount <= 0 Then
  96.             Unload Me
  97.             Exit Sub
  98.         End If
  99.         Str_ObjectCode = Trim(Combo_CostObjectCode(Combo_CostObject.ListIndex))
  100.         Str_ObjectName = Trim(Combo_CostObject.List(Combo_CostObject.ListIndex))
  101.         Unload Me
  102.         Call CostScatter                        '成本分配
  103.         Str_ObjectCode = ""
  104.         IsCombo = False
  105.     End If
  106. End Sub
  107. Private Sub Form_Load()                         '启动
  108.     If IsCombo = True Then
  109.         Exit Sub
  110.     End If
  111.     Call CshCostObject
  112. End Sub
  113. Sub CostGather()                                '成本归集
  114.     
  115.     Dim SqlStr As String                        'SQL字符
  116.     Dim Rec_CostGather As New ADODB.Recordset   '临时记录集
  117.     Dim Str_Formula As String                   '临时字符串
  118.     Dim yhAnswer As Integer                     '提示返回值
  119.     Dim RecTemp As New ADODB.Recordset          '临时记录集
  120.     Dim Quantity As Double                      '数量
  121.     Dim Cash As Currency                        '金额
  122.     Dim Tsxx As String                          '提示信息
  123.     IsCombo = True
  124.     Tsxx = "是否确认归集成本对象《" + Str_ObjectName + "》的数据?"
  125.     yhAnswer = Xtxxts(Tsxx, 2, 2)
  126.     If yhAnswer = 2 Then
  127.         Exit Sub
  128.     End If
  129.     
  130.     Xt_Wait.Show
  131.     Xt_Wait.Refresh
  132.     Screen.MousePointer = 11
  133.     
  134.     On Error GoTo Err:
  135.     Cw_DataEnvi.DataConnect.BeginTrans
  136.     
  137.     SqlStr = "Select * From Cb_GatherSet A Inner Join " _
  138.                 & "Cb_CostStructure B On A.CenterCode=b.CenterCode And A.ItemCode=B.ItemCode And ObjectCode='" + Str_ObjectCode + "'"
  139.     
  140.     Set Rec_CostGather = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  141.     
  142.     Cw_DataEnvi.DataConnect.Execute "Delete From Cb_CostGather  " _
  143.             & "Where Year=" + CStr(Glo_Year) + " And Period=" + CStr(Glo_Period) + " And Ltrim(CenterCode)+Rtrim(ItemCode) In (Select Ltrim(A.CenterCode)+Rtrim(A.ItemCode) From Cb_GatherSet A Inner Join " _
  144.                 & "Cb_CostStructure B On A.CenterCode=b.CenterCode And A.ItemCode=B.ItemCode And ObjectCode='" + Str_ObjectCode + "')"
  145.             
  146.     Do Until Rec_CostGather.EOF
  147.         
  148.         '计算数量
  149.         Str_Formula = Trim(Rec_CostGather.Fields("QuGatherFormula"))
  150.         If Str_Formula <> "" Then
  151.             Str_Formula = Fn_Replace(Str_Formula, 0)
  152.             '年月替换
  153.             Str_Formula = Replace(Str_Formula, "本年", Glo_Year)
  154.             Str_Formula = Replace(Str_Formula, "本月", Glo_Period)
  155.             SqlStr = "Select " & Str_Formula & " As ReturnValue"
  156.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  157.             If Not RecTemp.EOF Then
  158.                 Quantity = IIf(IsNull(RecTemp.Fields("ReturnValue")), 0, RecTemp.Fields("ReturnValue"))
  159.             Else
  160.                 Quantity = 0
  161.             End If
  162.         Else
  163.             Quantity = 0
  164.         End If
  165.         
  166.         '计算金额
  167.         Str_Formula = Trim(Rec_CostGather.Fields("MoGatherFormula"))
  168.         If Str_Formula <> "" Then
  169.             Str_Formula = Fn_Replace(Str_Formula, 0)
  170.             '年月替换
  171.             Str_Formula = Replace(Str_Formula, "本年", Glo_Year)
  172.             Str_Formula = Replace(Str_Formula, "本月", Glo_Period)
  173.             SqlStr = "Select " & Str_Formula & " As ReturnValue"
  174.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  175.             If Not RecTemp.EOF Then
  176.                 Cash = IIf(IsNull(RecTemp.Fields("ReturnValue")), 0, RecTemp.Fields("ReturnValue"))
  177.             Else
  178.                 Cash = 0
  179.             End If
  180.         Else
  181.             Cash = 0
  182.         End If
  183.         
  184.         '写入数据
  185.         If RecTemp.State = 1 Then RecTemp.Close
  186.         RecTemp.Open "Select * From Cb_CostGather Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockPessimistic
  187.         RecTemp.AddNew
  188.         RecTemp.Fields("ItemCode") = Rec_CostGather.Fields("ItemCode")
  189.         RecTemp.Fields("CenterCode") = Rec_CostGather.Fields("CenterCode")
  190.         RecTemp.Fields("Year") = Glo_Year
  191.         RecTemp.Fields("Period") = Glo_Period
  192.         RecTemp.Fields("GatherQuantity") = Quantity
  193.         RecTemp.Fields("GatherMoney") = Cash
  194.         RecTemp.Update
  195.         
  196.         Rec_CostGather.MoveNext
  197.     Loop
  198.     
  199.     Cw_DataEnvi.DataConnect.CommitTrans
  200.     
  201.     '显示数据
  202.     Xt_Wait.Hide
  203.     Screen.MousePointer = 0
  204.     Exit Sub
  205. Err:
  206.     Screen.MousePointer = 0
  207.     Cw_DataEnvi.DataConnect.RollbackTrans
  208. End Sub
  209. Sub CshCostObject()                             '初始化成本对象
  210.     Dim RecTemp As New ADODB.Recordset
  211.     SqlStr = "Select Objectcode As A,ObjectName As B From Cb_CostObject Order By Objectcode"
  212.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  213.     ReDim Combo_CostObjectCode(RecTemp.RecordCount)
  214.     Combo_CostObject.Clear
  215.     Do Until RecTemp.EOF
  216.         Combo_CostObject.AddItem "(" + Trim(RecTemp.Fields("A")) + ")" + RecTemp.Fields("B")
  217.         Combo_CostObjectCode(Combo_CostObject.NewIndex) = RecTemp.Fields("A")
  218.         RecTemp.MoveNext
  219.     Loop
  220.     
  221.     If Combo_CostObject.ListCount >= 1 Then
  222.         Combo_CostObject.ListIndex = 0
  223.     End If
  224. End Sub
  225. Sub CostScatter()                               '成本分配
  226.     Dim SqlStr As String                        'SQL字符
  227.     Dim Rec_CostScatter As New ADODB.Recordset  '临时记录集
  228.     Dim Str_Formula As String                   '临时字符串
  229.     Dim yhAnswer As Integer                     '提示返回值
  230.     Dim RecTemp As New ADODB.Recordset          '临时记录集
  231.     Dim Quantity As Double                      '数量
  232.     Dim Cash As Currency                        '金额
  233.     Dim CalOrder As Integer
  234.     Dim Tsxx As String
  235.     
  236.     IsCombo = True
  237.     Tsxx = "是否确认分配成本对象《" + Str_ObjectName + "》的数据?"
  238.     yhAnswer = Xtxxts(Tsxx, 2, 2)
  239.     If yhAnswer = 2 Then
  240.         Exit Sub
  241.     End If
  242.     
  243.     Screen.MousePointer = 11
  244.     On Error GoTo Err:
  245.     Cw_DataEnvi.DataConnect.BeginTrans
  246.     '判断是否能进行分配
  247.     SqlStr = "Select Max(CalOrder) AS A  From Cb_CostObject Where ObjectCode In " _
  248.                 & "(Select ObjectCode From Cb_ObjectComplete Where Auditing='1')"
  249.     
  250.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  251.     If IsNull(RecTemp.Fields("A")) Or RecTemp.Fields("A") = 0 Then
  252.         CalOrder = 1
  253.     Else
  254.         CalOrder = RecTemp.Fields("A") + 1
  255.     End If
  256.     
  257.     SqlStr = "Select CalOrder As A From Cb_CostObject Where ObjectCode='" + Str_ObjectCode + "'"
  258.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  259.     
  260.     If CalOrder < RecTemp.Fields("A") Then
  261.         Tsxx = "上级对象还未分配,请先分配上级对象!"
  262.         Call Xtxxts(Tsxx, 0, 1)
  263.         Screen.MousePointer = 0
  264.         Exit Sub
  265.     End If
  266.     
  267.     Xt_Wait.Show
  268.     Xt_Wait.Refresh
  269.     '删除存在的数据
  270.     Cw_DataEnvi.DataConnect.Execute ("Delete From Cb_CostScatter Where ObjectCode='" & Str_ObjectCode & "' And Year='" & Glo_Year & "' And Period='" & Glo_Period & "'")
  271.     '有分配公式的数据
  272.     SqlStr = "Select * From Cb_ScatterSet Where ObjectCode='" + Str_ObjectCode + "'"
  273.     Set Rec_CostScatter = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  274.     
  275.     Do Until Rec_CostScatter.EOF
  276.         '计算数量
  277.         Str_Formula = Trim(Rec_CostScatter.Fields("QuScatterFormula"))
  278.         If Str_Formula <> "" Then
  279.             Str_Formula = Fn_Replace(Str_Formula, 0)
  280.             '年月替换
  281.             Str_Formula = Replace(Str_Formula, "本年", Glo_Year)
  282.             Str_Formula = Replace(Str_Formula, "本月", Glo_Period)
  283.             SqlStr = "Select " & Str_Formula & " As ReturnValue"
  284.             Set Cxnrrec = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  285.             If Not Cxnrrec.EOF Then
  286.                 Quantity = IIf(IsNull(Cxnrrec.Fields("ReturnValue")), 0, Cxnrrec.Fields("ReturnValue"))
  287.             Else
  288.                 Quantity = 0
  289.             End If
  290.         Else
  291.             Quantity = 0
  292.         End If
  293.         '计算金额
  294.         Str_Formula = Trim(Rec_CostScatter.Fields("MoScatterFormula"))
  295.         If Str_Formula <> "" Then
  296.             Str_Formula = Fn_Replace(Str_Formula, 0)
  297.             '年月替换
  298.             Str_Formula = Replace(Str_Formula, "本年", Glo_Year)
  299.             Str_Formula = Replace(Str_Formula, "本月", Glo_Period)
  300.             SqlStr = "Select " & Str_Formula & " As ReturnValue"
  301.             Set Cxnrrec = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  302.             If Not Cxnrrec.EOF Then
  303.                 Cash = IIf(IsNull(Cxnrrec.Fields("ReturnValue")), 0, Cxnrrec.Fields("ReturnValue"))
  304.             Else
  305.                 Cash = 0
  306.             End If
  307.         Else
  308.             Cash = 0
  309.         End If
  310.         '写入数据
  311.         If RecTemp.State = 1 Then RecTemp.Close
  312.         RecTemp.Open "Select * From Cb_CostScatter Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockPessimistic
  313.         RecTemp.AddNew
  314.         RecTemp.Fields("Objectcode") = Rec_CostScatter.Fields("ObjectCode")
  315.         RecTemp.Fields("ItemCode") = Rec_CostScatter.Fields("ItemCode")
  316.         RecTemp.Fields("CenterCode") = Rec_CostScatter.Fields("CenterCode")
  317.         RecTemp.Fields("Year") = Glo_Year
  318.         RecTemp.Fields("Period") = Glo_Period
  319.         RecTemp.Fields("ScatterQuantity") = Quantity
  320.         RecTemp.Fields("ScatterMoney") = Cash
  321.         RecTemp.Update
  322.         Rec_CostScatter.MoveNext
  323.     Loop
  324.     
  325.     '无分配公式的数据
  326.     SqlStr = "Select * From Cb_CostGather " _
  327.             & "Where Year=" + CStr(Glo_Year) + " And Period=" + CStr(Glo_Period) + " And Ltrim(CenterCode)+Rtrim(ItemCode) In " _
  328.             & "(Select Ltrim(A.CenterCode)+Rtrim(A.ItemCode) From Cb_GatherSet A " _
  329.             & "Inner Join Cb_CostStructure B " _
  330.             & "On A.CenterCode=b.CenterCode And A.ItemCode=B.ItemCode And ObjectCode='" + Str_ObjectCode + "') " _
  331.             & "And Ltrim(CenterCode)+Rtrim(ItemCode) Not In " _
  332.             & "(Select Ltrim(CenterCode)+Rtrim(ItemCode)  " _
  333.             & "From Cb_CostScatter Where ObjectCode='" + Str_ObjectCode + "'   " _
  334.             & "And Year=" + CStr(Glo_Year) + " And Period=" + CStr(Glo_Period) + ")"
  335.     Set Rec_CostScatter = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  336.     
  337.     Do Until Rec_CostScatter.EOF
  338.         If RecTemp.State = 1 Then RecTemp.Close
  339.         RecTemp.Open "Select * From Cb_CostScatter Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockPessimistic
  340.         RecTemp.AddNew
  341.         RecTemp.Fields("Objectcode") = Str_ObjectCode
  342.         RecTemp.Fields("ItemCode") = Rec_CostScatter.Fields("ItemCode")
  343.         RecTemp.Fields("CenterCode") = Rec_CostScatter.Fields("CenterCode")
  344.         RecTemp.Fields("Year") = Glo_Year
  345.         RecTemp.Fields("Period") = Glo_Period
  346.         RecTemp.Fields("ScatterQuantity") = 0
  347.         RecTemp.Fields("ScatterMoney") = 0
  348.         RecTemp.Update
  349.         Rec_CostScatter.MoveNext
  350.     Loop
  351.     
  352.     Call CostDataCollect                        '成本数据汇总
  353.     Cw_DataEnvi.DataConnect.CommitTrans
  354.     Xt_Wait.Hide
  355.     Screen.MousePointer = 0
  356.     Exit Sub
  357. Err:
  358.     Screen.MousePointer = 0
  359.     Cw_DataEnvi.DataConnect.RollbackTrans
  360. End Sub
  361. Sub CostDataCollect()                           '成本数据汇总
  362.     Dim DimYear As Integer
  363.     Dim DimMM As Integer
  364.     Dim CostThmonYcl As Double
  365.     Dim CostTotalLjcl As Double
  366.     DimMM = Glo_Period - 1
  367.     If DimMM = 0 Then
  368.         DimYear = Glo_Year - 1
  369.         DimMM = 12
  370.     Else
  371.         DimYear = Glo_Year
  372.     End If
  373.     '求月产量,累计产量
  374.     SqlStr = "Select Quantity From Cb_ObjectComplete Where ObjectCode='" + Str_ObjectCode + "'  " _
  375.                 & "And Year='" + CStr(Glo_Year) + "' And Period='" + CStr(Glo_Period) + "'"
  376.                 
  377.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  378.     If Not RecTemp.EOF Then
  379.         If IsNull(RecTemp.Fields("Quantity")) Then
  380.             CostThmonYcl = 0
  381.         Else
  382.             CostThmonYcl = RecTemp.Fields("Quantity")
  383.         End If
  384.     Else
  385.         CostThmonYcl = 0
  386.     End If
  387.     
  388.     SqlStr = "Select Sum(Quantity) As CL From Cb_ObjectComplete Where ObjectCode='" + Str_ObjectCode + "'  " _
  389.                     & "And Year='" + CStr(Glo_Year) + "' And Period<='" + CStr(Glo_Period) + "'"
  390.                     
  391.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
  392.     If Not RecTemp.EOF Then
  393.         If IsNull(RecTemp.Fields("CL")) Then
  394.             CostTotalLjcl = 0
  395.         Else
  396.             CostTotalLjcl = RecTemp.Fields("CL")
  397.         End If
  398.     Else
  399.         CostTotalLjcl = 0
  400.     End If
  401.     '对象编码,当前年,当前月,(当前年),(上一月),月产量,累计产量
  402.     '对象明细表
  403.     SqlStr = "Delete From Cb_Sccbb Where ObjectCode='" + Str_ObjectCode + "' And Year=" + CStr(Glo_Year) + " And  " _
  404.                 & "Period=" + CStr(Glo_Period) + " Insert Into Cb_Sccbb Select Objectcode,ItemCode,ParentCode,Year, " _
  405.                 & "Period,UnitCode,PlanUnitPrice,PlanQuantity,PlanMoney,PreMonAmount,PreMonMoney,ScatterQuantity, " _
  406.                 & "ScatterMoney,InvQuantity,InvValue,ThmonConsumeAmount,ThmonConsumeMoney,ThMonFactUnAmount, " _
  407.                 & "ThMonFactUnMoney,TotalConsumeAmount,TotalConsumeMoney,TotalConsumeUnAmount,TotalConsumeUnMoney, " _
  408.                 & "ThMonRatioAmount,ThMonRatioMoney,TotalRationAmount,TotalRationMoney,IsSum,IsShow From  " _
  409.                 & "Cb_Fn_Sccb('" + Str_ObjectCode + "'," + CStr(Glo_Year) + "," + CStr(Glo_Period) + ", " _
  410.                 & "" + CStr(DimYear) + "," + CStr(DimMM) + "," + CStr(CostThmonYcl) + "," + CStr(CostTotalLjcl) + ")"
  411.     
  412.     '本年累计数量
  413.     '
  414.     SqlStr = SqlStr + " Update Cb_ObjectComplete Set TotalQuantity=B.TotalQuantity,LYearAver=B.LYearAver, " _
  415.                 & "ThmonUnitCost=B.ThmonUnitCost,ThmonCost=B.ThmonCost,TotalCost=B.TotalCost,TYearAver=B.TYearAver " _
  416.                 & "From Cb_ObjectComplete A,Cb_Fn_CostCollect('" + Str_ObjectCode + "'," + CStr(Glo_Year) + ", " _
  417.                 & "" + CStr(Glo_Period) + ") B Where A.ObjectCode=B.ObjectCode And A.Year=B.Year And A.Period=B.Period  " _
  418.                 & "And A.ObjectCode='" + Str_ObjectCode + "' And A.Year=" + CStr(Glo_Year) + " And  " _
  419.                 & "A.Period=" + CStr(Glo_Period) + ""
  420.                 
  421.     Cw_DataEnvi.DataConnect.Execute SqlStr
  422. End Sub