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

企业管理

开发平台:

Visual Basic

  1. Attribute VB_Name = "XtsyModule"
  2. '系统私有模块用来放置一些子系统独有的过程与函数
  3. Public TranPara As String       '期初应收票据标识
  4. Public ItemType As String       '单据制作凭证类别
  5. Public Sub Drxtztcs()                                   '读入系统帐套参数
  6.    
  7.     Dim Ztcsbrec As New ADODB.Recordset
  8.     Dim RecTemp As New ADODB.Recordset
  9.     Dim Sqlstr As String
  10.     
  11.     '读入本位币编码及名称
  12.     Sqlstr = "Select ForeignCurrCode,ForeignCurrName from Gy_ForeignCurrency where StandardFlag=1"
  13.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  14.     XtSCurrCode = Trim(RecTemp.Fields("ForeignCurrCode"))
  15.     XtSCurrName = Trim(RecTemp.Fields("ForeignCurrName"))
  16.   
  17.     With Ztcsbrec
  18.         '金额总位数
  19.         .Open "Select * From Gy_AccInformation Where SystemCode='Cwzz'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  20.         .MoveFirst
  21.         .Find "itemcode='cwjezws'"
  22.         If Not Ztcsbrec.EOF Then
  23.             Xtjezws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  24.         End If
  25.         
  26.         '数量总位数
  27.         .MoveFirst
  28.         .Find "itemcode='cwslzws'"
  29.         If Not Ztcsbrec.EOF Then
  30.             Xtslzws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  31.         End If
  32.    
  33.         '单价总位数
  34.         .MoveFirst
  35.         .Find "itemcode='cwdjzws'"
  36.         If Not Ztcsbrec.EOF Then
  37.             Xtdjzws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  38.         End If
  39.         
  40.         '金额小数位数
  41.         .MoveFirst
  42.         .Find "itemcode='cwjexsws'"
  43.         If Not Ztcsbrec.EOF Then
  44.             Xtjexsws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  45.         End If
  46.    
  47.         '数量小数位数
  48.         .MoveFirst
  49.         .Find "itemcode='cwslxsws'"
  50.         If Not Ztcsbrec.EOF Then
  51.             Xtslxsws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  52.         End If
  53.         
  54.         '单价小数位数
  55.         .MoveFirst
  56.         .Find "itemcode='cwdjxsws'"
  57.         If Not Ztcsbrec.EOF Then
  58.             Xtdjxsws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  59.         End If
  60.         .Close
  61.     End With
  62.   
  63. End Sub
  64. Public Function Fun_GetAccInformation(Str_ItemCode As String) As Variant                 '按输入项目读入系统帐套参数值
  65.     
  66.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  67.     Dim Sqlstr As String                    '连接字符串
  68.     
  69.     Sqlstr = "Select DataType,ItemValue From Gy_AccInformation Where ItemCode='" & Str_ItemCode & "'"
  70.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  71.     
  72.     With RecTemp
  73.     
  74.         If Not .EOF Then
  75.             Select Case .Fields("DataType")
  76.                 Case 0
  77.                     Fun_GetAccInformation = Trim(.Fields("ItemValue"))
  78.                 Case 1, 2
  79.                     Fun_GetAccInformation = Val(.Fields("ItemValue"))
  80.                 Case 3
  81.                     Fun_GetAccInformation = Format(.Fields("ItemValue"), "yyyy-mm-dd")
  82.             End Select
  83.         End If
  84.     End With
  85. End Function
  86. Public Function Fun_GetInputCode(ParaItem As String) As String                                                      '读取应收应付系统基本科目
  87.     'ParaItem 是系统传递来的项目参数
  88.     
  89.     Dim RecTemp As New ADODB.Recordset
  90.     
  91.     Sqlstr = "SELECT Ccode From Rp_InputCode Where ItemCode='" & ParaItem & "'"
  92.             
  93.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  94.     
  95.     If Not RecTemp.EOF Then
  96.         Fun_GetInputCode = Trim(RecTemp.Fields("Ccode") & "")
  97.     Else
  98.         Fun_GetInputCode = ""
  99.     End If
  100. End Function
  101. Public Function Fun_InputCodeCustomer(ParaCus As String, Optional ArPr As Integer) As String                        '读取客户对应应收、预收科目
  102.     
  103.     'ParaCus 客户编码或客户名称   ArPr:0-默认应收科目 1-预收科目
  104.     
  105.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  106.     Dim Sqlstr As String                    '连接字符串
  107.     
  108.     Fun_InputCodeCustomer = ""
  109.     
  110.     Sqlstr = "SELECT ArAccCode,PrAccCode FROM Gy_Customer Where CusCode='" & ParaCus & "' OR CusName='" & ParaCus & "'"
  111.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  112.     
  113.     If Not RecTemp.EOF Then
  114.         Select Case ArPr
  115.             Case 0
  116.                 If Trim(RecTemp.Fields("ArAccCode") & "") <> "" Then
  117.                     Fun_InputCodeCustomer = Trim(RecTemp.Fields("ArAccCode") & "")
  118.                 Else
  119.                     Fun_InputCodeCustomer = Fun_GetInputCode("AR_ArAccCode")
  120.                 End If
  121.             Case 1
  122.                 If Trim(RecTemp.Fields("PrAccCode") & "") <> "" Then
  123.                     Fun_InputCodeCustomer = Trim(RecTemp.Fields("PrAccCode") & "")
  124.                 Else
  125.                     Fun_InputCodeCustomer = Fun_GetInputCode("AR_PrAccCode")
  126.                 End If
  127.         End Select
  128.     End If
  129.     
  130. End Function
  131. Public Function Fun_InputCodeSupplier(ParaSup As String, Optional ArPr As Integer) As String                        '读取供应商对应应付、预付科目
  132.     
  133.     'ParaCus 供应商编码或供应商名称   ArPr:0-默认应付科目 1-预付科目
  134.     
  135.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  136.     Dim Sqlstr As String                    '连接字符串
  137.     
  138.     Fun_InputCodeSupplier = ""
  139.     
  140.     Sqlstr = "SELECT ApAccCode,PpAccCode FROM Gy_Supplier Where SupplierCode='" & ParaSup & "' OR SupplierName='" & ParaSup & "'"
  141.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  142.     
  143.     If Not RecTemp.EOF Then
  144.         Select Case ArPr
  145.             Case 0
  146.                 If Trim(RecTemp.Fields("ApAccCode") & "") <> "" Then
  147.                     Fun_InputCodeSupplier = Trim(RecTemp.Fields("ApAccCode") & "")
  148.                 Else
  149.                     Fun_InputCodeSupplier = Fun_GetInputCode("AP_ApAccCode")
  150.                 End If
  151.             Case 1
  152.                 If Trim(RecTemp.Fields("PpAccCode") & "") <> "" Then
  153.                     Fun_InputCodeSupplier = Trim(RecTemp.Fields("PpAccCode") & "")
  154.                 Else
  155.                     Fun_InputCodeSupplier = Fun_GetInputCode("AP_PpAccCode")
  156.                 End If
  157.         End Select
  158.     End If
  159.     
  160. End Function
  161. Public Function Fun_InputCodeSellTax(MaterialCode As String, Optional SellTax As Integer) As String           '读取存货对应销售收入和应交增值税科目
  162.     
  163.     'MaterialCode 存货编码  SellTax:0-默认销售收入科目 1-应交增值税科目
  164.     
  165.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  166.     Dim Sqlstr As String                    '连接字符串
  167.     
  168.     Fun_InputCodeSellTax = ""
  169.     
  170.     Sqlstr = "SELECT SellAccCode,SellTaxAccCode FROM Gy_Material Where MNumber='" & MaterialCode & "' OR Mname='" & MaterialCode & "'"
  171.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  172.     
  173.     If Not RecTemp.EOF Then
  174.         Select Case SellTax
  175.             Case 0
  176.                 If Trim(RecTemp.Fields("SellAccCode") & "") <> "" Then
  177.                     Fun_InputCodeSellTax = Trim(RecTemp.Fields("SellAccCode") & "")
  178.                 Else
  179.                     Fun_InputCodeSellTax = Fun_GetInputCode("AR_SellAccCode")
  180.                 End If
  181.             Case 1
  182.                 If Trim(RecTemp.Fields("SellTaxAccCode") & "") <> "" Then
  183.                     Fun_InputCodeSellTax = Trim(RecTemp.Fields("SellTaxAccCode") & "")
  184.                 Else
  185.                     Fun_InputCodeSellTax = Fun_GetInputCode("AR_SellTaxAccCode")
  186.                 End If
  187.         End Select
  188.     End If
  189.     
  190. End Function
  191. Public Function Fun_InputCodePurTax(MaterialCode As String, Optional PurTax As Integer) As String           '读取存货对应采购和采购税金科目
  192.     
  193.     'MaterialCode 存货编码  PurTax:0-默认采购科目 1-采购税金科目
  194.     
  195.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  196.     Dim Sqlstr As String                    '连接字符串
  197.     
  198.     Fun_InputCodePurTax = ""
  199.     
  200.     Sqlstr = "SELECT PurAccCode,PurTaxAccCode FROM Gy_Material Where MNumber='" & MaterialCode & "' OR Mname='" & MaterialCode & "'"
  201.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  202.     
  203.     If Not RecTemp.EOF Then
  204.         Select Case PurTax
  205.             Case 0
  206.                 If Trim(RecTemp.Fields("PurAccCode") & "") <> "" Then
  207.                     Fun_InputCodePurTax = Trim(RecTemp.Fields("PurAccCode") & "")
  208.                 Else
  209.                     Fun_InputCodePurTax = Fun_GetInputCode("AP_PurAccCode")
  210.                 End If
  211.             Case 1
  212.                 If Trim(RecTemp.Fields("PurTaxAccCode") & "") <> "" Then
  213.                     Fun_InputCodePurTax = Trim(RecTemp.Fields("PurTaxAccCode") & "")
  214.                 Else
  215.                     Fun_InputCodePurTax = Fun_GetInputCode("AP_PurTaxAccCode")
  216.                 End If
  217.         End Select
  218.     End If
  219.     
  220. End Function
  221. Public Sub Sub_GetAccRate(ParaForeignCurr As String, Bln_ConVertFlag As Boolean, Dbl_AccRate As Double)     '取外币记帐汇率
  222.     
  223.     'ParaForeignCurr 外币编码或外币名称  Bln_ConVertFlag:返回外币折算方式   Dbl_AccRate:返回外币记帐汇率
  224.     
  225.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  226.     Dim Sqlstr As String                    '连接字符串
  227.     
  228.     Sqlstr = "SELECT ConVertFlag,AccRate FROM Gy_ForeignCurrency Where ForeignCurrCode='" & ParaForeignCurr & "' OR ForeignCurrName='" & ParaForeignCurr & "'"
  229.     
  230.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  231.     
  232.     If Not RecTemp.EOF Then
  233.        Bln_ConVertFlag = RecTemp.Fields("ConVertFlag")
  234.        Dbl_AccRate = RecTemp.Fields("AccRate")
  235.     End If
  236.     
  237. End Sub
  238. Public Function Fun_GetPeriod(ParaBillDate As String, Kjyear As Integer, Period As Integer) As Boolean                 '判断单据日期是否有效,如有效则返回其所在年度和会计期间
  239.     'ParaBillDate:单据日期 Kjyear:返回会计年度 Period:返回会计期间
  240.     
  241.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  242.     Dim Sqlstr As String                    '连接字符串
  243.     Dim Tsxx As String                      '系统信息提示
  244.     
  245.     Fun_GetPeriod = False
  246.     
  247.     Sqlstr = "SELECT Kjyear,Period,ApJzbz FROM Gy_Kjrlb Where Qsrq<='" & ParaBillDate & "' And Zzrq>='" & ParaBillDate & "'"
  248.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  249.     
  250.     With RecTemp
  251.         If .EOF Then
  252.            Tsxx = "单据日期不在当前所选择年度会计期间内!"
  253.            Call Xtxxts(Tsxx, 0, 4)
  254.            Exit Function
  255.         Else
  256.             If .Fields("Kjyear") <> Xtyear Then
  257.                 Tsxx = "单据日期不在当前所选择年度会计期间内!"
  258.                 Call Xtxxts(Tsxx, 0, 4)
  259.                 Exit Function
  260.             End If
  261.             If RecTemp.Fields("ApJzbz") Then
  262.                 Tsxx = "单据日期所在会计期间已结帐!"
  263.                 Call Xtxxts(Tsxx, 0, 4)
  264.                 Exit Function
  265.             End If
  266.             
  267.             Kjyear = .Fields("Kjyear")              '返回会计年度
  268.             Period = .Fields("Period")              '返回会计期间
  269.             
  270.         End If
  271.     End With
  272.     
  273.     Fun_GetPeriod = True
  274.             
  275. End Function
  276. Public Function GetBankCcode(ParaItem As String) As String     '根据银行代码取对应银行科目
  277.     'ParaItem 是系统传递来的项目参数
  278.     Dim RecTemp As New ADODB.Recordset
  279.     
  280.     Sqlstr = "SELECT dbo.Gy_BankAccount.AccCode AS Ccode, dbo.Cwzz_AccCode.Cname " & _
  281.              "   FROM dbo.Cwzz_AccCode INNER JOIN " & _
  282.             " dbo.Gy_BankAccount ON dbo.Cwzz_AccCode.Ccode = dbo.Gy_BankAccount.AccCode " & _
  283.             "Where BankCode='" & ParaItem & "'"
  284.             
  285.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  286.     If RecTemp.EOF = False Then
  287.        GetBankCcode = Trim(RecTemp.Fields("Ccode"))
  288.     Else
  289.         GetBankCcode = ""
  290.     End If
  291. End Function
  292. '=======================================结算单(付款)审核======================================'
  293. Public Function Fun_CheckCloseBill(Lng_BillID As Long) As Boolean        '审核结算单
  294.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  295.     Dim Int_Dqyear As Integer              '当前会计年度
  296.     Dim Int_DqPeriod As Integer            '当前会计期间
  297.     Dim Tsxx As String                     '系统信息提示
  298.     
  299.     Fun_CheckCloseBill = False
  300.   
  301.     If Fun_GetAccInformation("Ap_IsMakerNotChecker") = 1 Then
  302.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Maker From RP_CloseBill Where CloseBillID=" & Lng_BillID & "and Maker='" & Xtczy & "'")
  303.         If Not RecTemp.EOF Then
  304.             Tsxx = "制单审核不能为同一人!"
  305.             Call Xtxxts(Tsxx, 0, 4)
  306.             Exit Function
  307.         End If
  308.     End If
  309.   
  310.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Checker,KjYear,Period From RP_CloseBill Where CloseBillID=" & Lng_BillID)
  311.     If Not RecTemp.EOF Then
  312.         If Trim(RecTemp.Fields("Checker") & "") <> "" Then
  313.             Tsxx = "该单据已审核,不需再次审核!"
  314.             Call Xtxxts(Tsxx, 0, 4)
  315.             Exit Function
  316.         End If
  317.         Int_Dqyear = RecTemp.Fields("KjYear")
  318.         Int_DqPeriod = RecTemp.Fields("Period")
  319.     End If
  320.   
  321.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Top 1 Kjyear,Period From Gy_Kjrlb Where ApJzbz=0 Order By Kjyear,Period")
  322.     
  323.     If Not RecTemp.EOF Then
  324.         If Not (Int_Dqyear = RecTemp.Fields("Kjyear") And Int_DqPeriod = RecTemp.Fields("Period")) Then
  325.             Tsxx = "非当前会计期间单据,不能审核过帐!"
  326.             Call Xtxxts(Tsxx, 0, 4)
  327.             Exit Function
  328.         End If
  329.     Else
  330.         Tsxx = "非当前会计期间单据,不能审核过帐!"
  331.         Call Xtxxts(Tsxx, 0, 4)
  332.         Exit Function
  333.     End If
  334.   
  335.     '审核过帐单据登记应收/应付明细帐和总帐
  336.     If Fun_BookSumCloseBill(Lng_BillID, Int_Dqyear, Int_DqPeriod) Then
  337.         Fun_CheckCloseBill = True
  338.     End If
  339.   
  340. End Function
  341. Private Function Fun_BookSumCloseBill(Lng_BillID As Long, Int_Dqyear As Integer, Int_DqPeriod As Integer) As Boolean     '审核过帐单据登记应收/应付明细帐和总帐
  342.   Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  343.   Dim Rec_AccList As New ADODB.Recordset     '应收应付明细帐动态集
  344.   Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  345.   Dim Rec_AccSumAss As New ADODB.Recordset   '应收应付辅助总帐动态集
  346.   Dim Str_PSCode As String                   '往来单位编码
  347.   Dim Str_DeptCode As String                 '部门编码
  348.   Dim Str_PersonCode As String               '职员编码
  349.   Dim Str_ForeignCurrCode As String          '原币编码
  350.   Dim Tsxx As String                         '系统信息提示
  351.   
  352.   Fun_BookSumCloseBill = False
  353.   
  354.   On Error GoTo Swcwcl
  355.   Cw_DataEnvi.DataConnect.BeginTrans
  356.      Cw_DataEnvi.DataConnect.Execute ("Update RP_CloseBill Set Checker='" & Xtczy & "' Where CloseBillID=" & Lng_BillID)
  357.      
  358.      Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From RP_CloseBill Where CloseBillID=" & Lng_BillID)
  359.      If RecTemp.EOF Then
  360.         Tsxx = "该单据已被其他人删除!"
  361.         Call Xtxxts(Tsxx, 0, 4)
  362.         Exit Function
  363.      End If
  364.      
  365.      '登记应收/应付明细帐
  366.      
  367.      With Rec_AccList
  368.         If .State = 1 Then .Close
  369.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  370.         .AddNew
  371.             .Fields("RPFlag") = RecTemp.Fields("RPFlag")                       '应收应付标识
  372.             .Fields("PSCode") = RecTemp.Fields("PSCode")                       '往来单位编码
  373.             .Fields("KJYear") = RecTemp.Fields("KJYear")                       '会计年度
  374.             .Fields("Period") = RecTemp.Fields("Period")                       '会计期间
  375.             .Fields("BillItemCode") = RecTemp.Fields("BillItemCode")           '单据类型
  376.             .Fields("BillID") = RecTemp.Fields("CloseBillID")                  '单据ID
  377.             .Fields("BillCode") = RecTemp.Fields("BillCode")                   '单据编码
  378.             .Fields("BillDate") = RecTemp.Fields("BillDate")                   '单据日期
  379.             .Fields("BbSsje") = RecTemp.Fields("BbSsje")                       '收回/付款本币金额
  380.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  381.             .Fields("AccRate") = RecTemp.Fields("AccRate") + 0                 '记帐汇率
  382.             .Fields("YbSsje") = RecTemp.Fields("YbSsje")                       '原币收回/付款金额
  383.             .Fields("SSCode") = RecTemp.Fields("SSCode")                       '结算方式
  384.             .Fields("BankBillNo") = RecTemp.Fields("BankBillNo")               '银行票据号码
  385.             .Fields("AccCode") = RecTemp.Fields("AccCode")                     '单据科目编码
  386.             .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")             '应收应付科目编码
  387.             .Fields("DeptCode") = RecTemp.Fields("DeptCode")                   '部门
  388.             .Fields("PersonCode") = RecTemp.Fields("PersonCode")               '经办人
  389.             .Fields("BankCode") = RecTemp.Fields("BankCode")                   '银行帐户
  390.             .Fields("Digest") = Trim(RecTemp.Fields("Digest"))                 '摘要
  391.             .Fields("Maker") = Trim(RecTemp.Fields("Maker"))                   '制单人
  392.             .Fields("Checker") = Trim(RecTemp.Fields("Checker"))               '审核人
  393.         
  394.         .Update
  395.      End With
  396.      
  397.      '登记应收/应付总帐
  398.      
  399.      Str_PSCode = Trim(RecTemp.Fields("PSCode") & "")
  400.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  401.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  402.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  403.      
  404.      With Rec_AccSum
  405.          If .State = 1 Then .Close
  406.         .Open "Select * From RP_AccSum Where RpFlag='" & Trim(RecTemp.Fields("RPFlag")) & "' And PSCode='" & Str_PSCode & _
  407.         "' And DeptCode='" & Str_DeptCode & "' And PersonCode='" & Str_PersonCode & "' And ForeignCurrCode='" & Str_ForeignCurrCode & "' And kjYear=" & Int_Dqyear & " And Period=" & Int_DqPeriod, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  408.         
  409.         If Not Rec_AccSum.EOF Then
  410.            .Fields("YbSsje") = .Fields("YbSsje") + RecTemp.Fields("YbSsje")                       '本期收回/付款原币金额
  411.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje")          '本期期末原币余额
  412.            .Fields("BbSsje") = .Fields("BbSsje") + RecTemp.Fields("BbSsje")                       '本期收回/付款本币金额
  413.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")          '本期期末本币余额
  414.            .Update
  415.         Else
  416.            .AddNew
  417.            .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                           '应收应付标识
  418.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  419.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  420.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  421.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  422.            .Fields("KJYear") = Int_Dqyear                                                         '会计年度
  423.            .Fields("Period") = Int_DqPeriod                                                       '会计期间
  424.            .Fields("YbSsje") = RecTemp.Fields("YbSsje") + 0                                       '本期收回/付款原币金额
  425.            .Fields("YbQmye") = -RecTemp.Fields("YbSsje")                                          '本期期末原币余额
  426.            .Fields("BbSsje") = RecTemp.Fields("BbSsje") + 0                                       '本期收回/付款本币金额
  427.            .Fields("BbQmye") = -RecTemp.Fields("BbSsje")                                          '本期期末本币余额
  428.            .Update
  429.     
  430.          End If
  431.     End With
  432.     
  433.   Cw_DataEnvi.DataConnect.CommitTrans
  434.   
  435.   Fun_BookSumCloseBill = True
  436.   
  437.   Exit Function
  438. Swcwcl:
  439.      Cw_DataEnvi.DataConnect.RollbackTrans
  440.      Tsxx = "审核单据过程中出现未知错误,程序自动恢复审核前状态!"
  441.      Call Xtxxts(Tsxx, 0, 1)
  442.      Exit Function
  443.      
  444. End Function
  445. '======================================其它应付单审核==================================='
  446. Public Function Fun_CheckOtherBill(Lng_BillID As Long) As Boolean        '审核其它应付单
  447.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  448.     Dim Int_Dqyear As Integer              '当前会计年度
  449.     Dim Int_DqPeriod As Integer            '当前会计期间
  450.     Dim Tsxx As String                     '系统信息提示
  451.     
  452.     Fun_CheckOtherBill = False
  453.     
  454.     '判断制单审核是否不能为同一人
  455.     If Fun_GetAccInformation("Ap_IsMakerNotChecker") = 1 Then
  456.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Maker From RP_OtherBill Where OtherBillID=" & Lng_BillID & "and Maker='" & Xtczy & "'")
  457.         If Not RecTemp.EOF Then
  458.             Tsxx = "制单审核不能为同一人!"
  459.             Call Xtxxts(Tsxx, 0, 4)
  460.             Exit Function
  461.         End If
  462.     End If
  463.     
  464.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Checker,KjYear,Period From RP_OtherBill Where OtherBillID=" & Lng_BillID)
  465.     If Not RecTemp.EOF Then
  466.         If Trim(RecTemp.Fields("Checker") & "") <> "" Then
  467.             Tsxx = "该单据已审核,不需再次审核!"
  468.             Call Xtxxts(Tsxx, 0, 4)
  469.             Exit Function
  470.         End If
  471.         Int_Dqyear = RecTemp.Fields("KjYear")
  472.         Int_DqPeriod = RecTemp.Fields("Period")
  473.     End If
  474.     
  475.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Top 1 Kjyear,Period From Gy_Kjrlb Where ApJzbz=0 Order By Kjyear,Period")
  476.     
  477.     If Not RecTemp.EOF Then
  478.         If Not (Int_Dqyear = RecTemp.Fields("Kjyear") And Int_DqPeriod = RecTemp.Fields("Period")) Then
  479.             Tsxx = "非当前会计期间单据,不能审核过帐!"
  480.             Call Xtxxts(Tsxx, 0, 4)
  481.             Exit Function
  482.         End If
  483.     Else
  484.         Tsxx = "非当前会计期间单据,不能审核过帐!"
  485.         Call Xtxxts(Tsxx, 0, 4)
  486.         Exit Function
  487.     End If
  488.     
  489.     '审核过帐单据登记应收/应付明细帐和总帐
  490.     If Fun_BookSumOtherBill(Lng_BillID, Int_Dqyear, Int_DqPeriod) Then
  491.         Fun_CheckOtherBill = True
  492.     End If
  493.   
  494. End Function
  495. Private Function Fun_BookSumOtherBill(Lng_BillID As Long, Int_Dqyear As Integer, Int_DqPeriod As Integer) As Boolean     '审核过帐单据登记应收/应付明细帐和总帐
  496.   Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  497.   Dim Rec_AccList As New ADODB.Recordset     '应收应付明细帐动态集
  498.   Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  499.   Dim Rec_AccSumAss As New ADODB.Recordset   '应收应付辅助总帐动态集
  500.   Dim Str_PSCode As String                   '往来单位编码
  501.   Dim Str_DeptCode As String                 '部门编码
  502.   Dim Str_PersonCode As String               '职员编码
  503.   Dim Str_ForeignCurrCode As String          '原币编码
  504.   Dim Tsxx As String                         '系统信息提示
  505.   
  506.   Fun_BookSumOtherBill = False
  507.   
  508.   On Error GoTo Swcwcl
  509.   Cw_DataEnvi.DataConnect.BeginTrans
  510.      Cw_DataEnvi.DataConnect.Execute ("Update RP_OtherBill Set Checker='" & Xtczy & "' Where OtherBillID=" & Lng_BillID)
  511.      
  512.      Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From RP_OtherBill Where OtherBillID=" & Lng_BillID)
  513.      If RecTemp.EOF Then
  514.         Tsxx = "该单据已被其他人删除!"
  515.         Call Xtxxts(Tsxx, 0, 4)
  516.         Exit Function
  517.      End If
  518.      
  519.      '登记应收/应付明细帐
  520.      
  521.      With Rec_AccList
  522.         If .State = 1 Then .Close
  523.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  524.         .AddNew
  525.             .Fields("RPFlag") = RecTemp.Fields("RPFlag")                       '应收应付标识
  526.             .Fields("PSCode") = RecTemp.Fields("PSCode")                       '往来单位编码
  527.             .Fields("KJYear") = RecTemp.Fields("KJYear")                       '会计年度
  528.             .Fields("Period") = RecTemp.Fields("Period")                       '会计期间
  529.             .Fields("BillItemCode") = RecTemp.Fields("BillItemCode")           '单据类型
  530.             .Fields("BillID") = RecTemp.Fields("OtherBillID")                  '单据ID
  531.             .Fields("BillCode") = RecTemp.Fields("BillCode")                   '单据编码
  532.             .Fields("BillDate") = RecTemp.Fields("BillDate")                   '单据日期
  533.             .Fields("Digest") = RecTemp.Fields("Digest")                       '摘要
  534.             .Fields("BbYsje") = RecTemp.Fields("BbYsje")                       '应收/应付本币金额
  535.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  536.             .Fields("AccRate") = RecTemp.Fields("AccRate") + 0                 '记帐汇率
  537.             .Fields("YbYsje") = RecTemp.Fields("YbYsje")                       '原币应收/应付金额
  538.             .Fields("DeptCode") = RecTemp.Fields("DeptCode")                   '原币应收/应付金额
  539.             .Fields("PersonCode") = RecTemp.Fields("PersonCode")               '原币应收/应付金额
  540.             .Fields("AccCode") = RecTemp.Fields("AccCode")                     '其它应收/代垫费用科目
  541.             .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")             '应收科目
  542.             .Fields("Maker") = RecTemp.Fields("Maker")                         '制单
  543.             .Fields("Checker") = RecTemp.Fields("Checker")                     '审核
  544.         .Update
  545.      End With
  546.      
  547.      '登记应收/应付总帐
  548.      
  549.      Str_PSCode = Trim(RecTemp.Fields("PSCode") & "")
  550.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  551.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  552.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  553.      
  554.      With Rec_AccSum
  555.          If .State = 1 Then .Close
  556.         .Open "Select * From RP_AccSum Where RpFlag='" & RecTemp.Fields("RPFlag") & "' And PSCode='" & Str_PSCode & _
  557.         "' And DeptCode='" & Str_DeptCode & "' And PersonCode='" & Str_PersonCode & "' And ForeignCurrCode='" & Str_ForeignCurrCode & "' And kjYear=" & Int_Dqyear & " And Period=" & Int_DqPeriod, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  558.         
  559.         If Not Rec_AccSum.EOF Then
  560.            .Fields("YbYsje") = .Fields("YbYsje") + RecTemp.Fields("YbYsje")                '本期应收/应付原币金额
  561.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje")   '本期期末原币余额
  562.            .Fields("BbYsje") = .Fields("BbYsje") + RecTemp.Fields("BbYsje")                '本期应收/应付本币金额
  563.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")   '本期期末本币余额
  564.            .Update
  565.         Else
  566.            .AddNew
  567.            .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                           '应收应付标识
  568.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  569.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  570.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  571.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  572.            .Fields("KJYear") = Int_Dqyear                                                         '会计年度
  573.            .Fields("Period") = Int_DqPeriod                                                       '会计期间
  574.            .Fields("YbYsje") = RecTemp.Fields("YbYsje") + 0                                       '本期应收/应付原币金额
  575.            .Fields("YbQmye") = RecTemp.Fields("YbYsje")                                           '本期期末原币余额
  576.            .Fields("BbYsje") = RecTemp.Fields("BbYsje") + 0                                       '本期应收/应付本币金额
  577.            .Fields("BbQmye") = RecTemp.Fields("BbYsje")                                           '本期期末本币余额
  578.            .Update
  579.     
  580.          End If
  581.     End With
  582.     
  583.   Cw_DataEnvi.DataConnect.CommitTrans
  584.   
  585.   Fun_BookSumOtherBill = True
  586.   
  587.   Exit Function
  588. Swcwcl:
  589.      Cw_DataEnvi.DataConnect.RollbackTrans
  590.      Tsxx = "审核单据过程中出现未知错误,程序自动恢复审核前状态!"
  591.      Call Xtxxts(Tsxx, 0, 1)
  592.      Exit Function
  593.      
  594. End Function
  595. '=======================================应收(应付)票据审核======================================'
  596. '===========应收票据审核后写入到款单,应付票据审核后写入付款单===============
  597. Public Function Fun_CheckNote(Lng_BillID As Long) As Boolean        '审核应付应付票据
  598.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  599.     Dim Int_Dqyear As Integer              '当前会计年度
  600.     Dim Int_DqPeriod As Integer            '当前会计期间
  601.     Dim Tsxx As String                     '系统信息提示
  602.     
  603.     Fun_CheckNote = False
  604.   
  605.     If Fun_GetAccInformation("Ap_IsMakerNotChecker") = 1 Then
  606.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Maker From RP_Note Where NoteID=" & Lng_BillID & "and Maker='" & Xtczy & "'")
  607.         If Not RecTemp.EOF Then
  608.             Tsxx = "制单审核不能为同一人!"
  609.             Call Xtxxts(Tsxx, 0, 4)
  610.             Exit Function
  611.         End If
  612.     End If
  613.     
  614.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Checker,KjYear,Period From RP_Note Where NoteID=" & Lng_BillID)
  615.     If Not RecTemp.EOF Then
  616.         If Trim(RecTemp.Fields("Checker") & "") <> "" Then
  617.             Tsxx = "该单据已审核,不需再次审核!"
  618.             Call Xtxxts(Tsxx, 0, 4)
  619.             Exit Function
  620.         End If
  621.         Int_Dqyear = RecTemp.Fields("KjYear")
  622.         Int_DqPeriod = RecTemp.Fields("Period")
  623.     End If
  624.   
  625.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Top 1 Kjyear,Period From Gy_Kjrlb Where ApJzbz=0 Order By Kjyear,Period")
  626.     
  627.     If Not RecTemp.EOF Then
  628.         If Not (Int_Dqyear = RecTemp.Fields("Kjyear") And Int_DqPeriod = RecTemp.Fields("Period")) Then
  629.             Tsxx = "非当前会计期间单据,不能审核过帐!"
  630.             Call Xtxxts(Tsxx, 0, 4)
  631.             Exit Function
  632.         End If
  633.     Else
  634.         Tsxx = "非当前会计期间单据,不能审核过帐!"
  635.         Call Xtxxts(Tsxx, 0, 4)
  636.         Exit Function
  637.     End If
  638.     
  639.     '审核过帐单据登记到款结算单,应收/应付明细帐和总帐
  640.     If Fun_BookSumNote(Lng_BillID, Int_Dqyear, Int_DqPeriod) Then
  641.         Fun_CheckNote = True
  642.     End If
  643. End Function
  644. '========应付票据审核处理(包括写入付款单/应付明细账和应付总帐)=========
  645. Public Function Fun_BookSumNote(Lng_BillID As Long, Int_Dqyear As Integer, Int_DqPeriod) As Boolean
  646.     Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  647.     
  648.     Dim Rec_Bill As New ADODB.Recordset        '到款结算单记录集
  649.     Dim CloseBillCode As String                '应付票据对应的结算单编号
  650.     Dim CloseBillId As Integer                 '应付票据对应的结算单ID号
  651.     Dim BillCode As String                     '到款单据代码
  652.     
  653.     Dim Rec_AccList As New ADODB.Recordset     '应付应付明细帐动态集
  654.     Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  655.     Dim Rec_AccSumAss As New ADODB.Recordset   '应收应付辅助总帐动态集
  656.     Dim Str_PSCode As String                   '往来单位编码
  657.     Dim Str_DeptCode As String                 '部门编码
  658.     Dim Str_PersonCode As String               '职员编码
  659.     Dim Str_ForeignCurrCode As String          '原币编码
  660.     Dim Tsxx As String                         '系统信息提示
  661.   
  662.     '10-将应付票据写入付款单
  663.     Fun_BookSumNote = False
  664.     BillCode = "0304"
  665.   
  666.     On Error GoTo Swcwcl
  667.     Cw_DataEnvi.DataConnect.BeginTrans
  668.     Cw_DataEnvi.DataConnect.Execute ("Update RP_Note Set Checker='" & Xtczy & "' Where NoteID=" & Lng_BillID)
  669.      
  670.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From RP_Note Where NoteID=" & Lng_BillID)
  671.     If RecTemp.EOF Then
  672.         Tsxx = "该单据已被其他人删除!"
  673.         Call Xtxxts(Tsxx, 0, 4)
  674.         Exit Function
  675.     End If
  676.      
  677.      '计算付款结算单编码和ID
  678.     CloseBillCode = CreatBillCode(BillCode, True) '付款单编码
  679.     CloseBillId = CreatBillID(BillCode)           '付款单ID
  680.     
  681.     '将结算单ID写入应付票据中
  682.     Cw_DataEnvi.DataConnect.Execute ("Update RP_Note Set CloseBillId='" & CloseBillId & "' Where NoteID=" & Lng_BillID)
  683.     '打开单据表动态集
  684.     If Rec_Bill.State = 1 Then Rec_Bill.Close
  685.     Rec_Bill.Open "Select * From RP_CloseBill Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  686.     With Rec_Bill
  687.         .AddNew
  688.         .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                                        '应收/应付标识
  689.         .Fields("CloseBillId") = CloseBillId                                                                '单据ID
  690.         .Fields("BillItemCode") = "90"                                                                      '付款单
  691.         .Fields("BillCode") = CloseBillCode                                                                 '单据号
  692.         .Fields("BillDate") = RecTemp.Fields("BillDate")                                                    '单据日期
  693.         .Fields("Kjyear") = RecTemp.Fields("KJYear")                                                        '会计年度
  694.         .Fields("Period") = RecTemp.Fields("Period")                                                        '会计期间
  695.         .Fields("PSCode") = RecTemp.Fields("PsCode")                                                        '客户编码
  696.         .Fields("AccCode") = RecTemp.Fields("AccCode")                                                      '应付票据科目
  697.         .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")                                              '应付科目
  698.         .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")                                      '原币编码
  699.         .Fields("AccRate") = RecTemp.Fields("AccRate")                                                      '记帐汇率
  700.         .Fields("YbSsJe") = RecTemp.Fields("YbSsJe")                                                        '原币金额
  701.         .Fields("BbSsje") = RecTemp.Fields("BbSsJe")                                                        '本币金额
  702.         .Fields("DeptCode") = RecTemp.Fields("DeptCode")                                                    '部门
  703.         .Fields("PersonCode") = RecTemp.Fields("PersonCode")                                                '经办人
  704.         .Fields("Digest") = Trim(RecTemp.Fields("Digest")) & "应付票据" & Trim(RecTemp.Fields("NoteCode"))  '摘要
  705.         .Fields("Maker") = RecTemp.Fields("Maker")                                                          '制单人
  706.         .Fields("SourceBillCode") = RecTemp.Fields("NoteCode")                                              '应付票据编码
  707.         .Fields("Checker") = Xtczy                                                                          '审核人
  708.         .Fields("IfBuildVouch") = True                  '付款单中不必再做凭证
  709.         .Update
  710.     End With
  711.     
  712.      '20-登记应收/应付明细帐
  713.      
  714.      With Rec_AccList
  715.         If .State = 1 Then .Close
  716.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  717.         .AddNew
  718.             .Fields("RPFlag") = RecTemp.Fields("RPFlag")                       '应收应付标识
  719.             .Fields("PSCode") = RecTemp.Fields("PSCode")                       '往来单位编码
  720.             .Fields("KJYear") = RecTemp.Fields("KJYear")                       '会计年度
  721.             .Fields("Period") = RecTemp.Fields("Period")                       '会计期间
  722.             .Fields("BillItemCode") = "90"                                     '单据类型
  723.             .Fields("BillID") = CloseBillId                                    '单据ID
  724.             .Fields("BillCode") = CloseBillCode                                '单据编码
  725.             .Fields("BillDate") = RecTemp.Fields("BillDate")                   '单据日期
  726.             .Fields("Digest") = Trim(RecTemp.Fields("Digest")) & "应付票据" & Trim(RecTemp.Fields("NoteCode")) '摘要
  727.             .Fields("BbSsje") = RecTemp.Fields("BbSsJe")                       '收回/付款本币金额
  728.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  729.             .Fields("AccRate") = RecTemp.Fields("AccRate") + 0                 '记帐汇率
  730.             .Fields("YbSsje") = RecTemp.Fields("YbSsJe")                       '原币收回/付款金额
  731.             .Fields("DeptCode") = RecTemp.Fields("DeptCode")                   '部门
  732.             .Fields("PersonCode") = RecTemp.Fields("PersonCode")               '经办人
  733.             .Fields("AccCode") = RecTemp.Fields("AccCode")                     '应付票据科目编码
  734.             .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")             '应付科目编码
  735.             .Fields("Maker") = RecTemp.Fields("Maker")                         '制单人
  736.             .Fields("Checker") = RecTemp.Fields("Checker")                     '审核人
  737.             .Fields("IfBuildVouch") = True                                     '在不必在明细帐中做凭证
  738.         .Update
  739.      End With
  740.      
  741.      '30-登记应收/应付总帐
  742.      
  743.      Str_PSCode = Trim(RecTemp.Fields("PSCode") & "")
  744.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  745.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  746.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  747.      
  748.      With Rec_AccSum
  749.          If .State = 1 Then .Close
  750.         .Open "Select * From RP_AccSum Where RpFlag='" & Trim(RecTemp.Fields("RPFlag")) & "' And PSCode='" & Str_PSCode & _
  751.         "' And DeptCode='" & Str_DeptCode & "' And PersonCode='" & Str_PersonCode & "' And ForeignCurrCode='" & Str_ForeignCurrCode & "' And kjYear=" & Int_Dqyear & " And Period=" & Int_DqPeriod, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  752.         
  753.         If Not Rec_AccSum.EOF Then
  754.            .Fields("YbSsje") = .Fields("YbSsje") + RecTemp.Fields("YbSsje")                       '本期收回/付款原币金额
  755.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje")          '本期期末原币余额
  756.            .Fields("BbSsje") = .Fields("BbSsje") + RecTemp.Fields("BbSsje")                       '本期收回/付款本币金额
  757.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")          '本期期末本币余额
  758.            .Update
  759.         Else
  760.            .AddNew
  761.            .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                           '应收应付标识
  762.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  763.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  764.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  765.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  766.            .Fields("KJYear") = RecTemp.Fields("KJYear")                                           '会计年度
  767.            .Fields("Period") = RecTemp.Fields("Period")                                           '会计期间
  768.            .Fields("YbSsje") = RecTemp.Fields("YbSsje") + 0                                       '本期收回/付款原币金额
  769.            .Fields("YbQmye") = -RecTemp.Fields("YbSsje")                                          '本期期末原币余额
  770.            .Fields("BbSsje") = RecTemp.Fields("BbSsje") + 0                                       '本期收回/付款本币金额
  771.            .Fields("BbQmye") = -RecTemp.Fields("BbSsje")                                          '本期期末本币余额
  772.            .Update
  773.     
  774.          End If
  775.     End With
  776.     
  777.   Cw_DataEnvi.DataConnect.CommitTrans
  778.   
  779.   Fun_BookSumNote = True
  780.   
  781.   Exit Function
  782. Swcwcl:
  783.      Cw_DataEnvi.DataConnect.RollbackTrans
  784.      Tsxx = "审核单据过程中出现未知错误,程序自动恢复审核前状态!"
  785.      Call Xtxxts(Tsxx, 0, 1)
  786.      Exit Function
  787. End Function
  788. '=======================================采购发票过帐======================================'
  789. Public Function Fun_AccInvoiceBill(Lng_BillID As Long, Int_Dqyear, Int_DqPeriod) As Boolean      '采购发票过帐
  790.   Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  791.   Dim Rec_AccList As New ADODB.Recordset     '应收应付明细帐动态集
  792.   Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  793.   Dim Str_PSCode As String                   '往来单位编码
  794.   Dim Str_DeptCode As String                 '部门编码
  795.   Dim Str_PersonCode As String               '职员编码
  796.   Dim Str_ForeignCurrCode As String          '原币编码
  797.   Dim Tsxx As String                         '系统信息提示
  798.   
  799.   Fun_AccInvoiceBill = False
  800.   
  801.   On Error GoTo Swcwcl
  802.   Cw_DataEnvi.DataConnect.BeginTrans
  803.   
  804.      Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From Cg_InvoiceMain Where ApBookFlag=0 And Checker<>'' And InvoiceMainID=" & Lng_BillID)
  805.      If RecTemp.EOF Then
  806.         Fun_AccInvoiceBill = True
  807.         Cw_DataEnvi.DataConnect.RollbackTrans
  808.         Exit Function
  809.      End If
  810.      
  811.      '对采购发票写过帐标识
  812.      Cw_DataEnvi.DataConnect.Execute ("Update Cg_InvoiceMain Set ApBookFlag=1 Where InvoiceMainID=" & Lng_BillID)
  813.      
  814.      '登记应收/应付明细帐
  815.      
  816.      With Rec_AccList
  817.         If .State = 1 Then .Close
  818.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  819.         .AddNew
  820.             .Fields("RPFlag") = "AP"                                           '应收应付标识
  821.             .Fields("PSCode") = RecTemp.Fields("SupplierCode")                 '往来单位编码
  822.             .Fields("KJYear") = Int_Dqyear                                     '过帐会计年度
  823.             .Fields("Period") = Int_DqPeriod                                   '过帐会计期间
  824.             If RecTemp.Fields("InvoiceSort") = "0" Then
  825.                .Fields("BillItemCode") = "70"                                  '单据类型(采购普通发票)
  826.             Else
  827.                .Fields("BillItemCode") = "71"                                  '单据类型(采购专用发票)
  828.             End If
  829.             .Fields("BillID") = RecTemp.Fields("InvoiceMainID")                '单据ID
  830.             .Fields("BillCode") = RecTemp.Fields("InvoiceNum")                 '单据编码
  831.             .Fields("BillDate") = Xtrq                                         '单据日期(过帐日期)
  832.             .Fields("Digest") = RecTemp.Fields("Remark")                       '摘要
  833.             .Fields("BbYsje") = RecTemp.Fields("NowValue")                     '应收/应付本币金额
  834.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  835.             .Fields("AccRate") = RecTemp.Fields("AccRate") + 0                 '记帐汇率
  836.             .Fields("YbYsje") = RecTemp.Fields("NowValueFor")                  '原币应收/应付金额
  837.             .Fields("DeptCode") = Trim(RecTemp.Fields("DeptCode") & "")        '部门
  838.             .Fields("PersonCode") = Trim(RecTemp.Fields("PersonCode") & "")    '业务员
  839.             .Fields("AccCodeArAp") = RecTemp.Fields("ApAccCode")               '应付科目
  840.             .Fields("Maker") = RecTemp.Fields("Maker")                         '制单
  841.             .Fields("Checker") = RecTemp.Fields("Checker")                     '审核
  842.         
  843.         .Update
  844.      End With
  845.      
  846.      '登记应收/应付总帐
  847.      
  848.      Str_PSCode = Trim(RecTemp.Fields("SupplierCode") & "")
  849.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  850.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  851.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  852.      
  853.      With Rec_AccSum
  854.          If .State = 1 Then .Close
  855.         .Open "Select * From RP_AccSum Where RpFlag='AP' And PSCode='" & Str_PSCode & _
  856.         "' And DeptCode='" & Str_DeptCode & "' And PersonCode='" & Str_PersonCode & "' And ForeignCurrCode='" & Str_ForeignCurrCode & "' And kjYear=" & Int_Dqyear & " And Period=" & Int_DqPeriod, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  857.         
  858.         If Not Rec_AccSum.EOF Then
  859.            .Fields("YbYsje") = .Fields("YbYsje") + RecTemp.Fields("NowValueFor")                  '本期应收/应付原币金额
  860.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje")          '本期期末原币余额
  861.            .Fields("BbYsje") = .Fields("BbYsje") + RecTemp.Fields("NowValue")                     '本期应收/应付本币金额
  862.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")          '本期期末本币余额
  863.            .Update
  864.         Else
  865.            .AddNew
  866.            .Fields("RPFlag") = "AP"                                                               '应收应付标识
  867.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  868.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  869.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  870.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  871.            .Fields("KJYear") = Int_Dqyear                                                         '会计年度
  872.            .Fields("Period") = Int_DqPeriod                                                       '会计期间
  873.            .Fields("YbYsje") = RecTemp.Fields("NowValueFor") + 0                                  '本期应收/应付原币金额
  874.            .Fields("YbQmye") = RecTemp.Fields("NowValueFor")                                      '本期期末原币余额
  875.            .Fields("BbYsje") = RecTemp.Fields("NowValue") + 0                                     '本期应收/应付本币金额
  876.            .Fields("BbQmye") = RecTemp.Fields("NowValue")                                         '本期期末本币余额
  877.            .Update
  878.     
  879.          End If
  880.      End With
  881.     
  882.   Cw_DataEnvi.DataConnect.CommitTrans
  883.   
  884.   Fun_AccInvoiceBill = True
  885.   
  886.   Exit Function
  887. Swcwcl:
  888.      Cw_DataEnvi.DataConnect.RollbackTrans
  889.      Tsxx = "发票过帐过程中出现未知错误,程序自动恢复过帐前状态!"
  890.      Call Xtxxts(Tsxx, 0, 1)
  891.      Exit Function
  892.   
  893. End Function
  894. Public Function AddImageCombo(Combote As ImageCombo, AddKey As String, AddText As String) '补充填充列表框(ImageCombo)
  895.   '函数参数:列表框(ImageCombo),填充索引(AddKey),填充内容(AddText)
  896.   Dim ci As ComboItem
  897.   
  898.   Set ci = Combote.ComboItems.Add(, AddKey, AddText)
  899.   
  900. End Function
  901. '***********************应付帐款会计科目*********************
  902. Public Function Fun_ApKjKm(KmType As String) As String               '读取应付帐款科目
  903.     
  904.     'KmType 应付帐款对应的编码
  905.     Dim RecTemp As New ADODB.Recordset              '临时查询动态集
  906.     Dim StrTemp As String                           '连接字符串
  907.     
  908.     StrTemp = " Select CCode From RP_InputCode Where ItemCode='" & KmType & "'"
  909.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  910.     With RecTemp
  911.         If Not .EOF Then
  912.             Fun_ApKjKm = Trim(.Fields("CCode"))
  913.         Else
  914.             Fun_ApKjKm = ""
  915.         End If
  916.     End With
  917. End Function