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

企业管理

开发平台:

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 Sub Sub_GetAccRate(ParaForeignCurr As String, Bln_ConVertFlag As Boolean, Dbl_AccRate As Double)     '取外币记帐汇率
  192.     
  193.     'ParaForeignCurr 外币编码或外币名称  Bln_ConVertFlag:返回外币折算方式   Dbl_AccRate:返回外币记帐汇率
  194.     
  195.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  196.     Dim Sqlstr As String                    '连接字符串
  197.     
  198.     Sqlstr = "SELECT ConVertFlag,AccRate FROM Gy_ForeignCurrency Where ForeignCurrCode='" & ParaForeignCurr & "' OR ForeignCurrName='" & ParaForeignCurr & "'"
  199.     
  200.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  201.     
  202.     If Not RecTemp.EOF Then
  203.        Bln_ConVertFlag = RecTemp.Fields("ConVertFlag")
  204.        Dbl_AccRate = RecTemp.Fields("AccRate")
  205.     End If
  206.     
  207. End Sub
  208. Public Function Fun_GetPeriod(ParaBillDate As String, Kjyear As Integer, Period As Integer) As Boolean                 '判断单据日期是否有效,如有效则返回其所在年度和会计期间
  209.     'ParaBillDate:单据日期 Kjyear:返回会计年度 Period:返回会计期间
  210.     
  211.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  212.     Dim Sqlstr As String                    '连接字符串
  213.     Dim Tsxx As String                      '系统信息提示
  214.     
  215.     Fun_GetPeriod = False
  216.     
  217.     Sqlstr = "SELECT Kjyear,Period,ArJzbz FROM Gy_Kjrlb Where Qsrq<='" & ParaBillDate & "' And Zzrq>='" & ParaBillDate & "'"
  218.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  219.     
  220.     With RecTemp
  221.         If .EOF Then
  222.            Tsxx = "单据日期不在当前所选择年度会计期间内!"
  223.            Call Xtxxts(Tsxx, 0, 4)
  224.            Exit Function
  225.         Else
  226.             If .Fields("Kjyear") <> Xtyear Then
  227.                 Tsxx = "单据日期不在当前所选择年度会计期间内!"
  228.                 Call Xtxxts(Tsxx, 0, 4)
  229.                 Exit Function
  230.             End If
  231.             If RecTemp.Fields("ArJzbz") Then
  232.                 Tsxx = "单据日期所在会计期间已结帐!"
  233.                 Call Xtxxts(Tsxx, 0, 4)
  234.                 Exit Function
  235.             End If
  236.             
  237.             Kjyear = .Fields("Kjyear")              '返回会计年度
  238.             Period = .Fields("Period")              '返回会计期间
  239.             
  240.         End If
  241.     End With
  242.     
  243.     Fun_GetPeriod = True
  244.             
  245. End Function
  246. Public Function GetBankCcode(ParaItem As String) As String     '根据银行代码取对应银行科目
  247.     'ParaItem 是系统传递来的项目参数
  248.     Dim RecTemp As New ADODB.Recordset
  249.     
  250.     Sqlstr = "SELECT dbo.Gy_BankAccount.AccCode AS Ccode, dbo.Cwzz_AccCode.Cname " & _
  251.              "   FROM dbo.Cwzz_AccCode INNER JOIN " & _
  252.             " dbo.Gy_BankAccount ON dbo.Cwzz_AccCode.Ccode = dbo.Gy_BankAccount.AccCode " & _
  253.             "Where BankCode='" & ParaItem & "'"
  254.             
  255.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  256.     If RecTemp.EOF = False Then
  257.        GetBankCcode = Trim(RecTemp.Fields("Ccode"))
  258.     Else
  259.         GetBankCcode = ""
  260.     End If
  261. End Function
  262. '=======================================结算单审核======================================'
  263. Public Function Fun_CheckCloseBill(Lng_BillID As Long) As Boolean        '审核结算单
  264.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  265.     Dim Int_Dqyear As Integer              '当前会计年度
  266.     Dim Int_DqPeriod As Integer            '当前会计期间
  267.     Dim Tsxx As String                     '系统信息提示
  268.     
  269.     Fun_CheckCloseBill = False
  270.   
  271.     If Fun_GetAccInformation("AR_IsMakerNotChecker") = 1 Then
  272.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Maker From RP_CloseBill Where CloseBillID=" & Lng_BillID & "and Maker='" & Xtczy & "'")
  273.         If Not RecTemp.EOF Then
  274.             Tsxx = "制单审核不能为同一人!"
  275.             Call Xtxxts(Tsxx, 0, 4)
  276.             Exit Function
  277.         End If
  278.     End If
  279.     
  280.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Checker,KjYear,Period From RP_CloseBill Where CloseBillID=" & Lng_BillID)
  281.     If Not RecTemp.EOF Then
  282.         If Trim(RecTemp.Fields("Checker") & "") <> "" Then
  283.             Tsxx = "该单据已审核,不需再次审核!"
  284.             Call Xtxxts(Tsxx, 0, 4)
  285.             Exit Function
  286.         End If
  287.         Int_Dqyear = RecTemp.Fields("KjYear")
  288.         Int_DqPeriod = RecTemp.Fields("Period")
  289.     End If
  290.   
  291.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Top 1 Kjyear,Period From Gy_Kjrlb Where ArJzbz=0 Order By Kjyear,Period")
  292.     
  293.     If Not RecTemp.EOF Then
  294.         If Not (Int_Dqyear = RecTemp.Fields("Kjyear") And Int_DqPeriod = RecTemp.Fields("Period")) Then
  295.             Tsxx = "非当前会计期间单据,不能审核过帐!"
  296.             Call Xtxxts(Tsxx, 0, 4)
  297.             Exit Function
  298.         End If
  299.     Else
  300.         Tsxx = "非当前会计期间单据,不能审核过帐!"
  301.         Call Xtxxts(Tsxx, 0, 4)
  302.         Exit Function
  303.     End If
  304.     
  305.     '审核过帐单据登记应收/应付明细帐和总帐
  306.     If Fun_BookSumCloseBill(Lng_BillID, Int_Dqyear, Int_DqPeriod) Then
  307.         Fun_CheckCloseBill = True
  308.     End If
  309.   
  310. End Function
  311. Private Function Fun_BookSumCloseBill(Lng_BillID As Long, Int_Dqyear As Integer, Int_DqPeriod As Integer) As Boolean     '审核过帐单据登记应收/应付明细帐和总帐
  312.   Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  313.   Dim Rec_AccList As New ADODB.Recordset     '应收应付明细帐动态集
  314.   Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  315.   Dim Rec_AccSumAss As New ADODB.Recordset   '应收应付辅助总帐动态集
  316.   Dim Str_PSCode As String                   '往来单位编码
  317.   Dim Str_DeptCode As String                 '部门编码
  318.   Dim Str_PersonCode As String               '职员编码
  319.   Dim Str_ForeignCurrCode As String          '原币编码
  320.   Dim Tsxx As String                         '系统信息提示
  321.   Dim SourceBillCode As String               '形成收款单的其它单据源
  322.   Fun_BookSumCloseBill = False
  323.   
  324.   On Error GoTo Swcwcl
  325.   Cw_DataEnvi.DataConnect.BeginTrans
  326.      Cw_DataEnvi.DataConnect.Execute ("Update RP_CloseBill Set Checker='" & Xtczy & "' Where CloseBillID=" & Lng_BillID)
  327.      
  328.      Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From RP_CloseBill Where CloseBillID=" & Lng_BillID)
  329.      If RecTemp.EOF Then
  330.         Tsxx = "该单据已被其他人删除!"
  331.         Call Xtxxts(Tsxx, 0, 4)
  332.         Exit Function
  333.      End If
  334.      SourceBillCode = Trim(RecTemp.Fields("SourceBillCode"))
  335.      
  336.      
  337.      '登记应收/应付明细帐
  338.      
  339.      With Rec_AccList
  340.         If .State = 1 Then .Close
  341.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  342.         .AddNew
  343.             .Fields("RPFlag") = RecTemp.Fields("RPFlag")                       '应收应付标识
  344.             .Fields("PSCode") = RecTemp.Fields("PSCode")                       '往来单位编码
  345.             .Fields("KJYear") = RecTemp.Fields("KJYear")                       '会计年度
  346.             .Fields("Period") = RecTemp.Fields("Period")                       '会计期间
  347.             .Fields("BillItemCode") = RecTemp.Fields("BillItemCode")           '单据类型
  348.             .Fields("BillID") = RecTemp.Fields("CloseBillID")                  '单据ID
  349.             .Fields("BillCode") = RecTemp.Fields("BillCode")                   '单据编码
  350.             .Fields("BillDate") = RecTemp.Fields("BillDate")                   '单据日期
  351.             .Fields("BbSsje") = RecTemp.Fields("BbSsje")                       '收回/付款本币金额
  352.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  353.             .Fields("AccRate") = RecTemp.Fields("AccRate") + 0                 '记帐汇率
  354.             .Fields("YbSsje") = RecTemp.Fields("YbSsje")                       '原币收回/付款金额
  355.             .Fields("SSCode") = RecTemp.Fields("SSCode")                       '结算方式
  356.             .Fields("BankBillNo") = RecTemp.Fields("BankBillNo")               '银行票据号码
  357.             .Fields("AccCode") = RecTemp.Fields("AccCode")                     '单据科目编码
  358.             .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")             '应收科目编码
  359.             .Fields("DeptCode") = RecTemp.Fields("DeptCode")                   '部门
  360.             .Fields("PersonCode") = RecTemp.Fields("PersonCode")               '经办人
  361.             .Fields("BankCode") = RecTemp.Fields("BankCode")                   '银行帐户
  362.             .Fields("Digest") = Trim(RecTemp.Fields("Digest"))                 '摘要
  363.             .Fields("Maker") = Trim(RecTemp.Fields("Maker"))                   '制单人
  364.             .Fields("Checker") = Trim(RecTemp.Fields("Checker"))               '审核人
  365.             If SourceBillCode <> "" Then                                       '其它单据形成的收款单不需在此做凭证
  366.                 .Fields("IfBuildVouch") = True
  367.             End If
  368.         .Update
  369.      End With
  370.      
  371.      '登记应收/应付总帐
  372.      
  373.      Str_PSCode = Trim(RecTemp.Fields("PSCode") & "")
  374.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  375.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  376.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  377.      
  378.      With Rec_AccSum
  379.          If .State = 1 Then .Close
  380.         .Open "Select * From RP_AccSum Where RpFlag='" & Trim(RecTemp.Fields("RPFlag")) & "' And PSCode='" & Str_PSCode & _
  381.         "' 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
  382.         
  383.         If Not Rec_AccSum.EOF Then
  384.            .Fields("YbSsje") = .Fields("YbSsje") + RecTemp.Fields("YbSsje")                       '本期收回/付款原币金额
  385.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje")          '本期期末原币余额
  386.            .Fields("BbSsje") = .Fields("BbSsje") + RecTemp.Fields("BbSsje")                       '本期收回/付款本币金额
  387.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")          '本期期末本币余额
  388.            .Update
  389.         Else
  390.            .AddNew
  391.            .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                           '应收应付标识
  392.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  393.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  394.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  395.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  396.            .Fields("KJYear") = Int_Dqyear                                                         '会计年度
  397.            .Fields("Period") = Int_DqPeriod                                                       '会计期间
  398.            .Fields("YbSsje") = RecTemp.Fields("YbSsje") + 0                                       '本期收回/付款原币金额
  399.            .Fields("YbQmye") = -RecTemp.Fields("YbSsje")                                          '本期期末原币余额
  400.            .Fields("BbSsje") = RecTemp.Fields("BbSsje") + 0                                       '本期收回/付款本币金额
  401.            .Fields("BbQmye") = -RecTemp.Fields("BbSsje")                                          '本期期末本币余额
  402.            .Update
  403.     
  404.          End If
  405.     End With
  406.     
  407.   Cw_DataEnvi.DataConnect.CommitTrans
  408.   
  409.   Fun_BookSumCloseBill = True
  410.   
  411.   Exit Function
  412. Swcwcl:
  413.      Cw_DataEnvi.DataConnect.RollbackTrans
  414.      Tsxx = "审核单据过程中出现未知错误,程序自动恢复审核前状态!"
  415.      Call Xtxxts(Tsxx, 0, 1)
  416.      Exit Function
  417.      
  418. End Function
  419. '======================================其它应收单(代垫费用单)审核==================================='
  420. Public Function Fun_CheckOtherBill(Lng_BillID As Long) As Boolean        '审核其它应收单和代垫费用单
  421.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  422.     Dim Int_Dqyear As Integer              '当前会计年度
  423.     Dim Int_DqPeriod As Integer            '当前会计期间
  424.     Dim Tsxx As String                     '系统信息提示
  425.     
  426.     Fun_CheckOtherBill = False
  427.     
  428.     '判断制单审核是否不能为同一人
  429.     If Fun_GetAccInformation("AR_IsMakerNotChecker") = 1 Then
  430.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Maker From RP_OtherBill Where OtherBillID=" & Lng_BillID & "and Maker='" & Xtczy & "'")
  431.         If Not RecTemp.EOF Then
  432.             Tsxx = "制单审核不能为同一人!"
  433.             Call Xtxxts(Tsxx, 0, 4)
  434.             Exit Function
  435.         End If
  436.     End If
  437.     
  438.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Checker,KjYear,Period From RP_OtherBill Where OtherBillID=" & Lng_BillID)
  439.     If Not RecTemp.EOF Then
  440.         If Trim(RecTemp.Fields("Checker") & "") <> "" Then
  441.             Tsxx = "该单据已审核,不需再次审核!"
  442.             Call Xtxxts(Tsxx, 0, 4)
  443.             Exit Function
  444.         End If
  445.         Int_Dqyear = RecTemp.Fields("KjYear")
  446.         Int_DqPeriod = RecTemp.Fields("Period")
  447.     End If
  448.     
  449.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Top 1 Kjyear,Period From Gy_Kjrlb Where ArJzbz=0 Order By Kjyear,Period")
  450.     
  451.     If Not RecTemp.EOF Then
  452.         If Not (Int_Dqyear = RecTemp.Fields("Kjyear") And Int_DqPeriod = RecTemp.Fields("Period")) Then
  453.             Tsxx = "非当前会计期间单据,不能审核过帐!"
  454.             Call Xtxxts(Tsxx, 0, 4)
  455.             Exit Function
  456.         End If
  457.     Else
  458.         Tsxx = "非当前会计期间单据,不能审核过帐!"
  459.         Call Xtxxts(Tsxx, 0, 4)
  460.         Exit Function
  461.     End If
  462.     
  463.     '审核过帐单据登记应收/应付明细帐和总帐
  464.     If Fun_BookSumOtherBill(Lng_BillID, Int_Dqyear, Int_DqPeriod) Then
  465.         Fun_CheckOtherBill = True
  466.     End If
  467.   
  468. End Function
  469. Private Function Fun_BookSumOtherBill(Lng_BillID As Long, Int_Dqyear As Integer, Int_DqPeriod As Integer) As Boolean     '审核过帐单据登记应收/应付明细帐和总帐
  470.   Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  471.   Dim Rec_AccList As New ADODB.Recordset     '应收应付明细帐动态集
  472.   Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  473.   Dim Rec_AccSumAss As New ADODB.Recordset   '应收应付辅助总帐动态集
  474.   Dim Str_PSCode As String                   '往来单位编码
  475.   Dim Str_DeptCode As String                 '部门编码
  476.   Dim Str_PersonCode As String               '职员编码
  477.   Dim Str_ForeignCurrCode As String          '原币编码
  478.   Dim Tsxx As String                         '系统信息提示
  479.   Dim SourceBillCode As String               '形成的应收单的源单据号
  480.   
  481.   Fun_BookSumOtherBill = False
  482.   
  483.   On Error GoTo Swcwcl
  484.   Cw_DataEnvi.DataConnect.BeginTrans
  485.      Cw_DataEnvi.DataConnect.Execute ("Update RP_OtherBill Set Checker='" & Xtczy & "' Where OtherBillID=" & Lng_BillID)
  486.      
  487.      Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From RP_OtherBill Where OtherBillID=" & Lng_BillID)
  488.      If RecTemp.EOF Then
  489.         Tsxx = "该单据已被其他人删除!"
  490.         Call Xtxxts(Tsxx, 0, 4)
  491.         Exit Function
  492.      End If
  493.      
  494.      SourceBillCode = Trim(RecTemp.Fields("SourceBillCode") & "")
  495.      
  496.      '登记应收/应付明细帐
  497.      
  498.      With Rec_AccList
  499.         If .State = 1 Then .Close
  500.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  501.         .AddNew
  502.             .Fields("RPFlag") = RecTemp.Fields("RPFlag")                       '应收应付标识
  503.             .Fields("PSCode") = RecTemp.Fields("PSCode")                       '往来单位编码
  504.             .Fields("KJYear") = RecTemp.Fields("KJYear")                       '会计年度
  505.             .Fields("Period") = RecTemp.Fields("Period")                       '会计期间
  506.             .Fields("BillItemCode") = RecTemp.Fields("BillItemCode")           '单据类型
  507.             .Fields("BillID") = RecTemp.Fields("OtherBillID")                  '单据ID
  508.             .Fields("BillCode") = RecTemp.Fields("BillCode")                   '单据编码
  509.             .Fields("BillDate") = RecTemp.Fields("BillDate")                   '单据日期
  510.             .Fields("Digest") = RecTemp.Fields("Digest")                       '摘要
  511.             .Fields("BbYsje") = RecTemp.Fields("BbYsje")                       '应收/应付本币金额
  512.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  513.             .Fields("AccRate") = RecTemp.Fields("AccRate") + 0                 '记帐汇率
  514.             .Fields("YbYsje") = RecTemp.Fields("YbYsje")                       '原币应收/应付金额
  515.             .Fields("DeptCode") = RecTemp.Fields("DeptCode")                   '原币应收/应付金额
  516.             .Fields("PersonCode") = RecTemp.Fields("PersonCode")               '原币应收/应付金额
  517.             .Fields("AccCode") = RecTemp.Fields("AccCode")                     '其它应收/代垫费用科目
  518.             .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")             '应收科目
  519.             .Fields("Maker") = RecTemp.Fields("Maker")                         '制单
  520.             .Fields("Checker") = RecTemp.Fields("Checker")                     '审核
  521.             
  522.             '如果是应收票据转出形成的应收单,置.Fields("IfBuildVouch") = True                                                                      '目的是避免在收款单中做凭证
  523.             
  524.             '目的是避免在应收单中重复做凭证
  525.             If SourceBillCode <> "" Then
  526.                 .Fields("IfBuildVouch") = True
  527.             End If
  528.         .Update
  529.      End With
  530.      
  531.      '登记应收/应付总帐
  532.      
  533.      Str_PSCode = Trim(RecTemp.Fields("PSCode") & "")
  534.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  535.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  536.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  537.      
  538.      With Rec_AccSum
  539.          If .State = 1 Then .Close
  540.         .Open "Select * From RP_AccSum Where RpFlag='" & RecTemp.Fields("RPFlag") & "' And PSCode='" & Str_PSCode & _
  541.         "' 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
  542.         
  543.         If Not Rec_AccSum.EOF Then
  544.            .Fields("YbYsje") = .Fields("YbYsje") + RecTemp.Fields("YbYsje")                '本期应收/应付原币金额
  545.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje")   '本期期末原币余额
  546.            .Fields("BbYsje") = .Fields("BbYsje") + RecTemp.Fields("BbYsje")                '本期应收/应付本币金额
  547.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")   '本期期末本币余额
  548.            .Update
  549.         Else
  550.            .AddNew
  551.            .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                           '应收应付标识
  552.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  553.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  554.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  555.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  556.            .Fields("KJYear") = Int_Dqyear                                                         '会计年度
  557.            .Fields("Period") = Int_DqPeriod                                                       '会计期间
  558.            .Fields("YbYsje") = RecTemp.Fields("YbYsje") + 0                                       '本期应收/应付原币金额
  559.            .Fields("YbQmye") = RecTemp.Fields("YbYsje")                                           '本期期末原币余额
  560.            .Fields("BbYsje") = RecTemp.Fields("BbYsje") + 0                                       '本期应收/应付本币金额
  561.            .Fields("BbQmye") = RecTemp.Fields("BbYsje")                                           '本期期末本币余额
  562.            .Update
  563.     
  564.          End If
  565.     End With
  566.     
  567.   Cw_DataEnvi.DataConnect.CommitTrans
  568.   
  569.   Fun_BookSumOtherBill = True
  570.   
  571.   Exit Function
  572. Swcwcl:
  573.      Cw_DataEnvi.DataConnect.RollbackTrans
  574.      Tsxx = "审核单据过程中出现未知错误,程序自动恢复审核前状态!"
  575.      Call Xtxxts(Tsxx, 0, 1)
  576.      Exit Function
  577.      
  578. End Function
  579. '=======================================应收票据审核======================================'
  580. Public Function Fun_CheckNote(Lng_BillID As Long) As Boolean        '审核应收票据
  581.     Dim RecTemp As New ADODB.Recordset     '临时使用动态集
  582.     Dim Int_Dqyear As Integer              '当前会计年度
  583.     Dim Int_DqPeriod As Integer            '当前会计期间
  584.     Dim Tsxx As String                     '系统信息提示
  585.     
  586.     Fun_CheckNote = False
  587.   
  588.     If Fun_GetAccInformation("AR_IsMakerNotChecker") = 1 Then
  589.         Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Maker From RP_Note Where NoteID=" & Lng_BillID & "and Maker='" & Xtczy & "'")
  590.         If Not RecTemp.EOF Then
  591.             Tsxx = "制单审核不能为同一人!"
  592.             Call Xtxxts(Tsxx, 0, 4)
  593.             Exit Function
  594.         End If
  595.     End If
  596.   
  597.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Checker,KjYear,Period  From RP_Note Where NoteID=" & Lng_BillID)
  598.     If Not RecTemp.EOF Then
  599.         If Trim(RecTemp.Fields("Checker") & "") <> "" Then
  600.             Tsxx = "该单据已审核,不需再次审核!"
  601.             Call Xtxxts(Tsxx, 0, 4)
  602.             Exit Function
  603.         End If
  604.         Int_Dqyear = RecTemp.Fields("KjYear")
  605.         Int_DqPeriod = RecTemp.Fields("Period")
  606.     End If
  607.   
  608.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select Top 1 Kjyear,Period From Gy_Kjrlb Where ArJzbz=0 Order By Kjyear,Period")
  609.     
  610.     If Not RecTemp.EOF Then
  611.         If Not (Int_Dqyear = RecTemp.Fields("Kjyear") And Int_DqPeriod = RecTemp.Fields("Period")) Then
  612.             Tsxx = "非当前会计期间单据,不能审核过帐!"
  613.             Call Xtxxts(Tsxx, 0, 4)
  614.             Exit Function
  615.         End If
  616.     Else
  617.         Tsxx = "非当前会计期间单据,不能审核过帐!"
  618.         Call Xtxxts(Tsxx, 0, 4)
  619.         Exit Function
  620.     End If
  621.     
  622.     '审核过帐单据登记到款结算单,应收/应付明细帐和总帐
  623.     If Fun_BookSumNote(Lng_BillID, Int_Dqyear, Int_DqPeriod) Then
  624.         Fun_CheckNote = True
  625.     End If
  626. End Function
  627. Public Function Fun_BookSumNote(Lng_BillID As Long, Int_Dqyear As Integer, Int_DqPeriod) As Boolean '将应收票据写入收款单
  628.     Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  629.     
  630.     Dim Rec_Bill As New ADODB.Recordset        '到款结算单记录集
  631.     Dim CloseBillCode As String                '应收票据对应的结算单编号
  632.     Dim CloseBillId As Integer                 '应收票据对应的结算单ID号
  633.     Dim BillCode As String                     '到款单据代码
  634.     
  635.     Dim Rec_AccList As New ADODB.Recordset     '应收应付明细帐动态集
  636.     Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  637.     Dim Rec_AccSumAss As New ADODB.Recordset   '应收应付辅助总帐动态集
  638.     Dim Str_PSCode As String                   '往来单位编码
  639.     Dim Str_DeptCode As String                 '部门编码
  640.     Dim Str_PersonCode As String               '职员编码
  641.     Dim Str_ForeignCurrCode As String          '原币编码
  642.     Dim Tsxx As String                         '系统信息提示
  643.   
  644.     Fun_BookSumNote = False
  645.     BillCode = "0204"
  646.   
  647.    On Error GoTo Swcwcl
  648.     Cw_DataEnvi.DataConnect.BeginTrans
  649.     Cw_DataEnvi.DataConnect.Execute ("Update RP_Note Set Checker='" & Xtczy & "' Where NoteID=" & Lng_BillID)
  650.      
  651.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From RP_Note Where NoteID=" & Lng_BillID)
  652.     If RecTemp.EOF Then
  653.         Tsxx = "该单据已被其他人删除!"
  654.         Call Xtxxts(Tsxx, 0, 4)
  655.         Exit Function
  656.     End If
  657.     
  658.      '写收款结算单
  659.     CloseBillCode = CreatBillCode(BillCode, True) '收款单编码
  660.     CloseBillId = CreatBillID(BillCode)           '收款单ID
  661.     
  662.     '将结算单ID写入应收票据中
  663.     Cw_DataEnvi.DataConnect.Execute ("Update RP_Note Set CloseBillId='" & CloseBillId & "' Where NoteID=" & Lng_BillID)
  664.     
  665.     '打开单据表动态集
  666.     If Rec_Bill.State = 1 Then Rec_Bill.Close
  667.     Rec_Bill.Open "Select * From RP_CloseBill Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  668.     With Rec_Bill
  669.         .AddNew
  670.         .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                                        '应收帐标识
  671.         .Fields("CloseBillId") = CloseBillId                                                                '单据ID
  672.         .Fields("BillItemCode") = "30"                                                                      '收款单
  673.         .Fields("BillCode") = CloseBillCode                                                                 '单据号
  674.         .Fields("BillDate") = RecTemp.Fields("BillDate")                                                    '单据日期
  675.         .Fields("Kjyear") = RecTemp.Fields("KJYear")                                                        '会计年度
  676.         .Fields("Period") = RecTemp.Fields("Period")                                                        '会计期间
  677.         .Fields("PSCode") = RecTemp.Fields("PsCode")                                                        '客户编码
  678.         .Fields("AccCode") = RecTemp.Fields("AccCode")                                                      '结算科目
  679.         .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")                                              '应收科目
  680.         .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")                                      '原币编码
  681.         .Fields("AccRate") = RecTemp.Fields("AccRate")                                                      '记帐汇率
  682.         .Fields("YbSsJe") = Val(RecTemp.Fields("YbSsJe") & "")                                              '原币金额
  683.         .Fields("BbSsje") = Val(RecTemp.Fields("BbSsJe") & "")                                              '本币金额
  684.         .Fields("DeptCode") = RecTemp.Fields("DeptCode")                                                    '部门
  685.         .Fields("PersonCode") = RecTemp.Fields("PersonCode")                                                '经办人
  686.         .Fields("Digest") = Trim(RecTemp.Fields("Digest")) & "应收票据" & Trim(RecTemp.Fields("NoteCode"))   '摘要
  687.         .Fields("Maker") = RecTemp.Fields("Maker")                                                          '制单人
  688.         .Fields("SourceBillCode") = RecTemp.Fields("NoteCode")                                              '应收票据编码
  689.         .Fields("Checker") = Xtczy                                                                          '审核人
  690.             
  691.         '目的是避免在收款单中重复做凭证
  692.         .Fields("IfBuildVouch") = True
  693.         
  694.         .Update
  695.     End With
  696.     
  697.     '在应收票据中记录该结算单ID
  698.     Cw_DataEnvi.DataConnect.Execute ("Update RP_Note Set CloseBillId='" & CloseBillId & "' Where NoteID=" & Lng_BillID)
  699.      '登记应收/应付明细帐
  700.      
  701.      With Rec_AccList
  702.         If .State = 1 Then .Close
  703.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  704.         .AddNew
  705.             .Fields("RPFlag") = RecTemp.Fields("RPFlag")                       '应收应付标识
  706.             .Fields("PSCode") = RecTemp.Fields("PSCode")                       '往来单位编码
  707.             .Fields("KJYear") = RecTemp.Fields("KJYear")                       '会计年度
  708.             .Fields("Period") = RecTemp.Fields("Period")                       '会计期间
  709.             .Fields("BillItemCode") = "30"                                     '单据类型
  710.             .Fields("BillID") = CloseBillId                                    '单据ID
  711.             .Fields("BillCode") = CloseBillCode                                '单据编码
  712.             .Fields("BillDate") = RecTemp.Fields("BillDate")                   '单据日期
  713.             .Fields("Digest") = Trim(RecTemp.Fields("Digest")) & "应收票据" & Trim(RecTemp.Fields("NoteCode")) '摘要
  714.             .Fields("BbSsje") = RecTemp.Fields("BbSsJe") + Val(RecTemp.Fields("BbInterest") & "") '收回/付款本币金额+利息
  715.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  716.             .Fields("AccRate") = RecTemp.Fields("AccRate") + 0                 '记帐汇率
  717.             .Fields("YbSsje") = RecTemp.Fields("YbSsJe") + Val(RecTemp.Fields("YbInterest") & "") '原币收回/付款金额+利息
  718.             .Fields("DeptCode") = RecTemp.Fields("DeptCode")                   '部门
  719.             .Fields("PersonCode") = RecTemp.Fields("PersonCode")               '经办人
  720.             .Fields("AccCode") = RecTemp.Fields("AccCode")                     '单据科目编码
  721.             .Fields("AccCodeArAp") = RecTemp.Fields("AccCodeArAp")             '应收科目编码
  722.             .Fields("Maker") = RecTemp.Fields("Maker")                         '制单人
  723.             .Fields("Checker") = RecTemp.Fields("Checker")                     '审核人
  724.             .Fields("IfBuildVouch") = True                                 '目的是避免在收款单中做凭证
  725.         .Update
  726.      End With
  727.      
  728.      '登记应收/应付总帐
  729.      
  730.      Str_PSCode = Trim(RecTemp.Fields("PSCode") & "")
  731.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  732.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  733.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  734.      
  735.      With Rec_AccSum
  736.          If .State = 1 Then .Close
  737.         .Open "Select * From RP_AccSum Where RpFlag='" & Trim(RecTemp.Fields("RPFlag")) & "' And PSCode='" & Str_PSCode & _
  738.         "' 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
  739.         
  740.         If Not Rec_AccSum.EOF Then
  741.            .Fields("YbSsje") = .Fields("YbSsje") + RecTemp.Fields("YbSsje")                       '本期收回/付款原币金额
  742.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje") - Val(RecTemp.Fields("YbInterest") & "")          '本期期末原币余额-利息
  743.            .Fields("BbSsje") = .Fields("BbSsje") + RecTemp.Fields("BbSsje") - Val(RecTemp.Fields("BbInterest") & "")                     '本期收回/付款本币金额-利息
  744.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")          '本期期末本币余额
  745.            .Update
  746.         Else
  747.            .AddNew
  748.            .Fields("RPFlag") = RecTemp.Fields("RPFlag")                                           '应收应付标识
  749.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  750.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  751.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  752.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  753.            .Fields("KJYear") = RecTemp.Fields("KJYear")                                           '会计年度
  754.            .Fields("Period") = RecTemp.Fields("Period")                                           '会计期间
  755.            .Fields("YbSsje") = RecTemp.Fields("YbSsje") + 0                                       '本期收回/付款原币金额
  756.            .Fields("YbQmye") = -RecTemp.Fields("YbSsje")                                          '本期期末原币余额
  757.            .Fields("BbSsje") = RecTemp.Fields("BbSsje") + 0                                       '本期收回/付款本币金额
  758.            .Fields("BbQmye") = -RecTemp.Fields("BbSsje")                                          '本期期末本币余额
  759.            .Update
  760.     
  761.          End If
  762.     End With
  763.     
  764.   Cw_DataEnvi.DataConnect.CommitTrans
  765.   
  766.   Fun_BookSumNote = True
  767.   
  768.   Exit Function
  769. Swcwcl:
  770.      Cw_DataEnvi.DataConnect.RollbackTrans
  771.      Tsxx = "审核单据过程中出现未知错误,程序自动恢复审核前状态!"
  772.      Call Xtxxts(Tsxx, 0, 1)
  773.      Exit Function
  774. End Function
  775. '=======================================销售发票过帐======================================'
  776. Public Function Fun_AccInvoiceBill(Lng_BillID As Long, Int_Dqyear, Int_DqPeriod) As Boolean      '销售发票过帐
  777.   Dim RecTemp As New ADODB.Recordset         '临时使用动态集
  778.   Dim Rec_AccList As New ADODB.Recordset     '应收应付明细帐动态集
  779.   Dim Rec_AccSum As New ADODB.Recordset      '应收应付总帐动态集
  780.   Dim Str_PSCode As String                   '往来单位编码
  781.   Dim Str_DeptCode As String                 '部门编码
  782.   Dim Str_PersonCode As String               '职员编码
  783.   Dim Str_ForeignCurrCode As String          '原币编码
  784.   Dim Tsxx As String                         '系统信息提示
  785.   
  786.   Fun_AccInvoiceBill = False
  787.   
  788.   On Error GoTo Swcwcl
  789.   Cw_DataEnvi.DataConnect.BeginTrans
  790.   
  791.      Set RecTemp = Cw_DataEnvi.DataConnect.Execute("Select * From Xs_InvoiceBillMain Where ArBookFlag=0 And Checker<>'' And InvoiceBillMainID=" & Lng_BillID)
  792.      If RecTemp.EOF Then
  793.         Fun_AccInvoiceBill = True
  794.         Cw_DataEnvi.DataConnect.RollbackTrans
  795.         Exit Function
  796.      End If
  797.      
  798.      '对销售发票写过帐标识
  799.      Cw_DataEnvi.DataConnect.Execute ("Update Xs_InvoiceBillMain Set ArBookFlag=1 Where InvoiceBillMainID=" & Lng_BillID)
  800.      
  801.      '登记应收/应付明细帐
  802.      
  803.      With Rec_AccList
  804.         If .State = 1 Then .Close
  805.         .Open "Select * From RP_AccList Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  806.         .AddNew
  807.             .Fields("RPFlag") = "AR"                                           '应收应付标识
  808.             .Fields("PSCode") = RecTemp.Fields("CusCode")                      '往来单位编码
  809.             .Fields("KJYear") = Int_Dqyear                                     '过帐会计年度
  810.             .Fields("Period") = Int_DqPeriod                                   '过帐会计期间
  811.             If RecTemp.Fields("InvoiceType") = "0" Then
  812.                .Fields("BillItemCode") = "10"                                  '单据类型(销售普通发票)
  813.             Else
  814.                .Fields("BillItemCode") = "11"                                  '单据类型(销售专用发票)
  815.             End If
  816.             .Fields("BillID") = RecTemp.Fields("InvoiceBillMainID")            '单据ID
  817.             .Fields("BillCode") = RecTemp.Fields("InvoiceCode")                '单据编码
  818.             .Fields("BillDate") = Xtrq                                         '单据日期(过帐日期)
  819.             .Fields("Digest") = RecTemp.Fields("Remark")                       '摘要
  820.             .Fields("BbYsje") = RecTemp.Fields("NowValue")                     '应收/应付本币金额
  821.             .Fields("ForeignCurrCode") = RecTemp.Fields("ForeignCurrCode")     '原币编码
  822.             .Fields("AccRate") = RecTemp.Fields("ExchRate") + 0                '记帐汇率
  823.             .Fields("YbYsje") = RecTemp.Fields("NowValueFor")                  '原币应收/应付金额
  824.             .Fields("DeptCode") = Trim(RecTemp.Fields("DeptCode") & "")        '部门
  825.             .Fields("PersonCode") = Trim(RecTemp.Fields("PersonCode") & "")    '业务员
  826.             .Fields("AccCodeArAp") = RecTemp.Fields("ArAccCode")               '应收科目
  827.             .Fields("Maker") = RecTemp.Fields("Maker")                         '制单
  828.             .Fields("Checker") = RecTemp.Fields("Checker")                     '审核
  829.         
  830.         .Update
  831.      End With
  832.      
  833.      '登记应收/应付总帐
  834.      
  835.      Str_PSCode = Trim(RecTemp.Fields("CusCode") & "")
  836.      Str_DeptCode = Trim(RecTemp.Fields("DeptCode") & "")
  837.      Str_PersonCode = Trim(RecTemp.Fields("PersonCode") & "")
  838.      Str_ForeignCurrCode = Trim(RecTemp.Fields("ForeignCurrCode") & "")
  839.      
  840.      With Rec_AccSum
  841.          If .State = 1 Then .Close
  842.         .Open "Select * From RP_AccSum Where RpFlag='AR' And PSCode='" & Str_PSCode & _
  843.         "' 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
  844.         
  845.         If Not Rec_AccSum.EOF Then
  846.            .Fields("YbYsje") = .Fields("YbYsje") + RecTemp.Fields("NowValueFor")                  '本期应收/应付原币金额
  847.            .Fields("YbQmye") = .Fields("YbQcye") + .Fields("YbYsje") - .Fields("YbSsje")          '本期期末原币余额
  848.            .Fields("BbYsje") = .Fields("BbYsje") + RecTemp.Fields("NowValue")                     '本期应收/应付本币金额
  849.            .Fields("BbQmye") = .Fields("BbQcye") + .Fields("BbYsje") - .Fields("BbSsje")          '本期期末本币余额
  850.            .Update
  851.         Else
  852.            .AddNew
  853.            .Fields("RPFlag") = "AR"                                                               '应收应付标识
  854.            .Fields("PSCode") = Str_PSCode                                                         '往来单位编码
  855.            .Fields("DeptCode") = Str_DeptCode                                                     '部门编码
  856.            .Fields("PersonCode") = Str_PersonCode                                                 '个人编码
  857.            .Fields("ForeignCurrCode") = Str_ForeignCurrCode                                       '原币编码
  858.            .Fields("KJYear") = Int_Dqyear                                                         '会计年度
  859.            .Fields("Period") = Int_DqPeriod                                                       '会计期间
  860.            .Fields("YbYsje") = RecTemp.Fields("NowValueFor") + 0                                  '本期应收/应付原币金额
  861.            .Fields("YbQmye") = RecTemp.Fields("NowValueFor")                                      '本期期末原币余额
  862.            .Fields("BbYsje") = RecTemp.Fields("NowValue") + 0                                     '本期应收/应付本币金额
  863.            .Fields("BbQmye") = RecTemp.Fields("NowValue")                                         '本期期末本币余额
  864.            .Update
  865.     
  866.          End If
  867.      End With
  868.     
  869.   Cw_DataEnvi.DataConnect.CommitTrans
  870.   
  871.   Fun_AccInvoiceBill = True
  872.   
  873.   Exit Function
  874. Swcwcl:
  875.      Cw_DataEnvi.DataConnect.RollbackTrans
  876.      Tsxx = "发票过帐过程中出现未知错误,程序自动恢复过帐前状态!"
  877.      Call Xtxxts(Tsxx, 0, 1)
  878.      Exit Function
  879.   
  880. End Function
  881. Public Function AddImageCombo(Combote As ImageCombo, AddKey As String, AddText As String) '补充填充列表框(ImageCombo)
  882.   '函数参数:列表框(ImageCombo),填充索引(AddKey),填充内容(AddText)
  883.   Dim ci As ComboItem
  884.   
  885.   Set ci = Combote.ComboItems.Add(, AddKey, AddText)
  886.   
  887. End Function
  888. '[<<==========以下为销售系统函数===========
  889. '以下为销售发票所需的函数(与应收系统无关)
  890. Public Function Xs_AddNew(XsDate As String) As Boolean
  891. Dim Tsxx As String
  892. Dim Sqlstr As String
  893. Dim RecTemp As New ADODB.Recordset
  894.     
  895.     Xs_AddNew = False
  896.     
  897.     Sqlstr = "Select * From Gy_kjrlb where qsrq<='" & Format(XsDate, "yyyy-mm-dd") & "' and zzrq>='" & Format(XsDate, "yyyy-mm-dd") & "'"
  898.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  899.     If RecTemp.RecordCount > 0 Then
  900.         If Trim(RecTemp.Fields("xsjzbz")) Then
  901.             Tsxx = "当前单据日期所在的会计期间已经结帐!"
  902.             Call Xtxxts(Tsxx, 0, 1)
  903.             Exit Function
  904.         End If
  905.         XsYear = RecTemp.Fields("KjYear")
  906.         XsMm = RecTemp.Fields("Period")
  907.         Xs_AddNew = True
  908.     Else
  909.         Tsxx = "当前单据日期的会计年没有设置!"
  910.         Call Xtxxts(Tsxx, 0, 1)
  911.         Exit Function
  912.     End If
  913.     
  914. End Function
  915. Public Function Inv_Check(TempId As Integer) As Boolean             '审核发票
  916.     Dim strTemp As String
  917.     Dim RecTemp As New ADODB.Recordset
  918.     Dim RsTemp As New ADODB.Recordset
  919.     Dim WareCode As String
  920.     Dim OrderId As Integer
  921.     Dim ConsignId As Integer
  922.     Dim Flag As Boolean                 '是否现销
  923.     Dim Quantity As Double              '核销数量
  924.     Dim BackID As Integer               '回款单ID
  925.     Dim BackCode As String              '回款单号
  926.     Dim CreateCode As String            '核销单号
  927.     Dim Tsxx As String                  '系统信息提示
  928.     
  929.     Inv_Check = False
  930.     
  931.     strTemp = "Select Checker,invoiceflag From Xs_InvoiceBillMain Where InvoiceBillMainID='" & TempId & "'"
  932.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  933.     With RecTemp
  934.         If Not .EOF Then
  935.             If Trim(.Fields("Checker") & "") <> "" Then
  936.                 Tsxx = "该单据已审核,不能再审核!"
  937.                 Call Xtxxts(Tsxx, 0, 4)
  938.                 Exit Function
  939.             End If
  940.         Else
  941.             Tsxx = "该单据可能被其他用户删除!"
  942.             Call Xtxxts(Tsxx, 0, 4)
  943.             Exit Function
  944.         End If
  945.         Flag = Not Trim(.Fields("invoiceflag"))
  946.     End With
  947.     '<<]
  948.     '审核数据判断
  949.     strTemp = "select * from xs_V_invoiceconsign where InvoiceBillMainID = " & TempId
  950.     Set RsTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  951.     With RsTemp
  952.         Do While Not .EOF
  953.             If Abs(.Fields("RecQuantity")) - Abs(.Fields("InvQuantity")) < Abs(.Fields("Inv_Quantity")) Then
  954.                 Tsxx = "该发票中货物 ' " & Trim(.Fields("warename")) & " ' 的开票数量太大!"
  955.                 Call Xtxxts(Tsxx, 0, 4)
  956.                 Exit Function
  957.             End If
  958.             .MoveNext
  959.         Loop
  960.     End With
  961.     On Error GoTo ErrTemp
  962.     Cw_DataEnvi.DataConnect.BeginTrans
  963.         '将单据写入审核标识
  964.         Cw_DataEnvi.DataConnect.Execute ("Update Xs_InvoiceBillMain Set Checker='" & Xtczy & "' Where InvoiceBillMainID='" & TempId) & "'"
  965.         '回写发货单、订单
  966.         strTemp = "select * from Xs_V_InvoiceConsign where InvoiceBillMainID = " & TempId
  967.         Set RsTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  968.         With RsTemp
  969.             If Flag Then            '现销产生回款单
  970.                 '回写发货单数据
  971.                 Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillMain Set returnmoneyflag=1 Where ConsignBillMainID='" & TempId & "'")
  972.                 Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillSub Set settleallflag=1,capreturnmoney=capitalwhole Where ConsignBillMainID='" & TempId & "'")
  973.                 
  974.                 BackID = CreatBillID(1408)
  975.                 BackCode = CreatBillCode(1408, True)
  976.                 CreateCode = CreatBillCode(1409, True)
  977.                 '生成回款单
  978.                 If RecTemp.State Then RecTemp.Close
  979.                 RecTemp.Open "Select * From Xs_ReturnMoney Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  980.                     RecTemp.AddNew
  981.                     RecTemp.Fields("kjyear") = Xtyear          '会计年
  982.                     RecTemp.Fields("period") = Xtmm            '会计月
  983.                     RecTemp.Fields("ReturnDate") = Format(Xtrq, "yyyy-mm-dd")           '回款日期
  984.                     RecTemp.Fields("ReturnMoneyID") = BackID                          '回款ID
  985.                     RecTemp.Fields("ReturnMoneyCode") = BackCode                        '回款单号
  986.                     RecTemp.Fields("cusCode") = Trim(.Fields("cuscode") & "")           '客户编码
  987.                     RecTemp.Fields("deptCode") = Trim(.Fields("deptcode") & "")         '部门编码
  988.                     RecTemp.Fields("personCode") = Trim(.Fields("personcode") & "")     '职员编码
  989.                     RecTemp.Fields("foreigncurrcode") = Trim(.Fields("foreigncurrcode") & "")   '币种
  990.                     RecTemp.Fields("exchrate") = Trim(.Fields("exchrate") & "")         '汇率
  991.                     RecTemp.Fields("ConVertFlag") = .Fields("ConVertFlag")              '折算方式
  992.                     RecTemp.Fields("CapitalRemainMoney") = 0                            '核销剩余金额(原币)
  993.                     RecTemp.Fields("signdate") = Format(Xtrq, "yyyy-mm-dd")             '签收日期
  994.                     RecTemp.Fields("maker") = Trim(Xtczy & "")                          '制单人
  995.                     RecTemp.Fields("makerdate") = Format(Xtrq, "yyyy-mm-dd")            '制单日期
  996.                     RecTemp.Fields("checker") = Trim(Xtczy & "")                        '审核人
  997.                     RecTemp.Fields("checkerdate") = Format(Xtrq, "yyyy-mm-dd")          '审核日期
  998.                     RecTemp.Update
  999.                     RecTemp.Close
  1000.                 '回写回款单核销关系
  1001.                 strTemp = "select * from Xs_MoneyWare where 1=2"
  1002.                 RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1003.                     RecTemp.AddNew
  1004.                     RecTemp.Fields("MoneyWareCode") = CreateCode            '标识为同次核销
  1005.                     RecTemp.Fields("kjyear") = Xtyear
  1006.                     RecTemp.Fields("period") = Xtmm
  1007.                     RecTemp.Fields("billtype") = 0
  1008.                     RecTemp.Fields("billid") = BackID                         '回款单ID
  1009.                     RecTemp.Fields("billcode") = BackCode                       '回款单号
  1010.                     RecTemp.Fields("cuscode") = Trim(.Fields("cuscode") & "")   '客户
  1011.                     RecTemp.Fields("CapitalUsedMoney") = 0                      '本币核销金额
  1012.                     RecTemp.Fields("verifier") = Xtczy
  1013.                     RecTemp.Fields("verifierdate") = Format(Xtrq, "yyyy-mm-dd")
  1014.                     RecTemp.Update
  1015.             End If
  1016.             
  1017.             Do While Not .EOF
  1018.                 WareCode = Trim(.Fields("warecode"))
  1019.                 ConsignId = Trim(.Fields("consignbillmainid"))
  1020.                 Quantity = Val(.Fields("inv_quantity"))              '核销数量
  1021.                 '发货单
  1022.                 If RecTemp.State Then RecTemp.Close
  1023.                 strTemp = "select * from xs_consignbillsub where consignbillmainid='" & ConsignId & "' and warecode='" & WareCode & "'"
  1024.                 RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1025.                 If RecTemp.RecordCount > 0 Then
  1026.                     RecTemp.Fields("invquantity") = RecTemp.Fields("invquantity") + Quantity                '开票数量
  1027.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") + Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  1028.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  1029.                     If Flag Then
  1030.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") + Quantity * Val(.Fields("TaxUnitPrice"))           '回款金额(原币)
  1031.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  1032.                         RecTemp.Update
  1033.                         RecTemp.Close
  1034.                         '回款单
  1035.                         Cw_DataEnvi.DataConnect.Execute ("Update Xs_ReturnMoney set ReturnMoney=ReturnMoney+ cast('" & Quantity * Val(.Fields("TaxUnitPrice")) & "' as money),CapitalReturnMoney" & _
  1036.                                 "=CapitalReturnMoney+ cast( '" & Quantity * Val(.Fields("capitalTaxUnitPrice")) & "' as money) where ReturnMoneyID = '" & BackID & "'")
  1037.                         '回款单核销关系
  1038.                         Cw_DataEnvi.DataConnect.Execute ("Update Xs_MoneyWare set CapitalUsedMoney=CapitalUsedMoney+ cast( '" & Quantity * Val(.Fields("capitalTaxUnitPrice")) & "' as money) " & _
  1039.                                 " where billid = '" & BackID & "' and billtype=0")
  1040.                         '发货单核销关系
  1041.                         strTemp = "select * from Xs_MoneyWare where 1=2"
  1042.                         RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1043.                             RecTemp.AddNew
  1044.                             RecTemp.Fields("MoneyWareCode") = CreateCode        '标识为同次核销
  1045.                             RecTemp.Fields("kjyear") = Xtyear
  1046.                             RecTemp.Fields("period") = Xtmm
  1047.                             RecTemp.Fields("billtype") = 1
  1048.                             RecTemp.Fields("billid") = Trim(.Fields("consignbillmainid"))       '发货单ID
  1049.                             RecTemp.Fields("billcode") = Trim(.Fields("consigncode"))           '发货单号
  1050.                             RecTemp.Fields("cuscode") = Trim(.Fields("cuscode"))                '客户
  1051.                             RecTemp.Fields("warecode") = WareCode                               '货物编码
  1052.                             RecTemp.Fields("CapitalUsedMoney") = Quantity * Val(.Fields("capitalTaxUnitPrice"))     '本币核销金额
  1053.                             RecTemp.Fields("verifier") = Xtczy
  1054.                             RecTemp.Fields("verifierdate") = Format(Xtrq, "yyyy-mm-dd")
  1055.                     End If
  1056.                 End If
  1057.                 RecTemp.Update
  1058.                 RecTemp.Close
  1059.                 '订单
  1060.                 strTemp = "select orderbillmainid from xs_consignbillmain where ConsignBillMainID = " & ConsignId
  1061.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  1062.                 If RecTemp.RecordCount > 0 Then
  1063.                     OrderId = Val(RecTemp.Fields("orderbillmainid") & "")       '取订单号
  1064.                     If RecTemp.State Then RecTemp.Close
  1065.                     strTemp = "select * from xs_orderbillsub where orderbillmainid='" & OrderId & "' and warecode='" & WareCode & "'"
  1066.                     RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1067.                     If RecTemp.RecordCount > 0 Then                             '是否有订单
  1068.                     RecTemp.Fields("invoicequantity") = RecTemp.Fields("invoicequantity") + Quantity                '开票数量
  1069.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") + Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  1070.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  1071.                     If Flag Then
  1072.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") + Quantity * Val(.Fields("TaxUnitPrice"))           '回款金额(原币)
  1073.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  1074.                     End If
  1075.                         RecTemp.Update
  1076.                         RecTemp.Close
  1077.                     End If
  1078.                 End If
  1079.                 .MoveNext
  1080.             Loop
  1081.         End With
  1082.     Cw_DataEnvi.DataConnect.CommitTrans
  1083.     
  1084.     Inv_Check = True
  1085.     Exit Function
  1086.     
  1087. ErrTemp:
  1088.     Cw_DataEnvi.DataConnect.RollbackTrans
  1089.     Tsxx = "审核时出错,数据被恢复!"
  1090.     Call Xtxxts(Tsxx, 0, 1)
  1091. End Function
  1092. Public Function Inv_UnCheck(TempId As Integer) As Boolean               '弃审发票
  1093.     Dim strTemp As String
  1094.     Dim RecTemp As New ADODB.Recordset
  1095.     Dim RsTemp As New ADODB.Recordset
  1096.     Dim WareCode As String
  1097.     Dim OrderId As Integer
  1098.     Dim ConsignId As Integer
  1099.     Dim Flag As Boolean                 '是否现销
  1100.     Dim Quantity As Double              '核销数量
  1101.     Dim BackID As Integer               '回款ID
  1102.     Dim BackCode As String              '回款单号
  1103.     Dim Tsxx As String                  '系统信息提示
  1104.         
  1105.     Inv_UnCheck = False
  1106.     
  1107.     strTemp = "Select Checker,AccountOpt,ArBookFlag,InvalideMaker,invoiceflag From Xs_InvoiceBillMain Where InvoiceBillMainID=" & TempId
  1108.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  1109.     With RecTemp
  1110.         If Not .EOF Then
  1111.             If Trim(.Fields("Checker") & "") = "" Then
  1112.                 Tsxx = "该单据未审核,不允许再弃审!"
  1113.                 Call Xtxxts(Tsxx, 0, 4)
  1114.                 Exit Function
  1115.             End If
  1116.             If Trim(.Fields("AccountOpt") & "") <> "" Then
  1117.                 Tsxx = "该单据已经结帐,不允许弃审!"
  1118.                 Call Xtxxts(Tsxx, 0, 4)
  1119.                 Exit Function
  1120.             End If
  1121.             If Trim(.Fields("ArBookFlag") & "") = 1 Then
  1122.                 Tsxx = "该单据已被应收系统使用,不允许弃审!"
  1123.                 Call Xtxxts(Tsxx, 0, 4)
  1124.                 Exit Function
  1125.             End If
  1126.             If Trim(.Fields("InvalideMaker") & "") <> "" Then
  1127.                 Tsxx = "该单据已被作废,不允许弃审!"
  1128.                 Call Xtxxts(Tsxx, 0, 4)
  1129.                 Exit Function
  1130.             End If
  1131.         Else
  1132.             Tsxx = "该单据可能被其他用户删除!"
  1133.             Call Xtxxts(Tsxx, 0, 4)
  1134.             Exit Function
  1135.         End If
  1136.         Flag = Not Trim(.Fields("invoiceflag"))
  1137.     End With
  1138.     '<<]
  1139.    
  1140.     On Error GoTo ErrTemp
  1141.     Cw_DataEnvi.DataConnect.BeginTrans
  1142.         '将单据清除审核标识
  1143.         Cw_DataEnvi.DataConnect.Execute ("Update Xs_InvoiceBillMain Set Checker='' Where InvoiceBillMainID='" & TempId) & "'"
  1144.         '回写发货单、订单
  1145.         strTemp = "select * from Xs_V_InvoiceConsign where InvoiceBillMainID = " & TempId
  1146.         Set RsTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  1147.         With RsTemp
  1148.             Do While Not .EOF
  1149.                 WareCode = Trim(.Fields("warecode"))
  1150.                 ConsignId = Trim(.Fields("consignbillmainid"))
  1151.                 Quantity = Val(.Fields("inv_quantity"))              '核销数量
  1152.                 '发货单
  1153.                 If RecTemp.State Then RecTemp.Close
  1154.                 strTemp = "select * from xs_consignbillsub where consignbillmainid='" & ConsignId & "' and warecode='" & WareCode & "'"
  1155.                 RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1156.                 If RecTemp.RecordCount > 0 Then
  1157.                     RecTemp.Fields("invquantity") = RecTemp.Fields("invquantity") - Quantity                '开票数量
  1158.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  1159.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))      '总金额(本币)
  1160.                     If Flag Then
  1161.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  1162.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))        '回款金额(本币)
  1163.                     End If
  1164.                 End If
  1165.                 RecTemp.Update
  1166.                 RecTemp.Close
  1167.                 '订单
  1168.                 strTemp = "select orderbillmainid from xs_consignbillmain where ConsignBillMainID = " & ConsignId
  1169.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  1170.                 If RecTemp.RecordCount > 0 Then
  1171.                     OrderId = Val(RecTemp.Fields("orderbillmainid") & "")       '取订单号
  1172.                     If RecTemp.State Then RecTemp.Close
  1173.                     strTemp = "select * from xs_orderbillsub where orderbillmainid='" & OrderId & "' and warecode='" & WareCode & "'"
  1174.                     RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1175.                     If RecTemp.RecordCount > 0 Then                             '是否有订单
  1176.                     RecTemp.Fields("invoicequantity") = RecTemp.Fields("invoicequantity") - Quantity                '开票数量
  1177.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  1178.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  1179.                     If Flag Then
  1180.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  1181.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  1182.                     End If
  1183.                         RecTemp.Update
  1184.                         RecTemp.Close
  1185.                     End If
  1186.                 End If
  1187.                 .MoveNext
  1188.             Loop
  1189.         End With
  1190.         '现销回款
  1191.         If Flag Then
  1192.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillMain Set returnmoneyflag=0 Where ConsignBillMainID='" & TempId & "'")
  1193.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillSub Set settleallflag=0,capreturnmoney=0 Where ConsignBillMainID='" & TempId & "'")
  1194.             
  1195.             Sqlstr = "select * from Xs_V_CM Where Cbillid='" & ConsignId & "'"
  1196.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1197.             If RecTemp.RecordCount > 0 Then
  1198.                 BackCode = Trim(RecTemp.Fields("MoneyWareCode"))
  1199.                 BackID = Trim(RecTemp.Fields("Mbillid"))        '回款单ID
  1200.             End If
  1201.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_ReturnMoney Where ReturnMoneyID='" & BackID & "'")
  1202.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_MoneyWare Where MoneyWareCode='" & BackCode & "'")
  1203.         End If
  1204.     Cw_DataEnvi.DataConnect.CommitTrans
  1205.     Inv_UnCheck = True
  1206.     Exit Function
  1207. ErrTemp:
  1208.     Cw_DataEnvi.DataConnect.RollbackTrans
  1209.     Tsxx = "弃审时出错,数据被恢复!"
  1210.     Call Xtxxts(Tsxx, 0, 1)
  1211. End Function
  1212. Public Function Inv_Cancel(TempId As Integer) As Boolean               '发票作废
  1213.     Dim strTemp As String
  1214.     Dim RecTemp As New ADODB.Recordset
  1215.     Dim RsTemp As New ADODB.Recordset
  1216.     Dim WareCode As String
  1217.     Dim OrderId As Integer
  1218.     Dim ConsignId As Integer
  1219.     Dim Flag As Boolean                 '是否现销
  1220.     Dim Quantity As Double              '核销数量
  1221.     Dim BackID As Integer               '回款ID
  1222.     Dim BackCode As String              '回款单号
  1223.     Dim Tsxx As String                  '系统信息提示
  1224.     
  1225.     Inv_Cancel = False
  1226.     
  1227.     strTemp = "Select Checker,AccountOpt,ArBookFlag,InvalideMaker,invoiceflag From Xs_InvoiceBillMain Where InvoiceBillMainID=" & TempId
  1228.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  1229.     With RecTemp
  1230.         If Not .EOF Then
  1231.             If Trim(.Fields("Checker") & "") = "" Then
  1232.                 Tsxx = "该单据未审核,不允许作废!"
  1233.                 Call Xtxxts(Tsxx, 0, 4)
  1234.                 Exit Function
  1235.             End If
  1236.             If Trim(.Fields("AccountOpt") & "") <> "" Then
  1237.                 Tsxx = "该单据已经结帐,不允许作废!"
  1238.                 Call Xtxxts(Tsxx, 0, 4)
  1239.                 Exit Function
  1240.             End If
  1241.             If Trim(.Fields("ArBookFlag") & "") = 1 Then
  1242.                 Tsxx = "该单据已被应收系统使用,不允许作废!"
  1243.                 Call Xtxxts(Tsxx, 0, 4)
  1244.                 Exit Function
  1245.             End If
  1246.             If Trim(.Fields("InvalideMaker") & "") <> "" Then
  1247.                 Tsxx = "该单据已被作废,不允许再作废!"
  1248.                 Call Xtxxts(Tsxx, 0, 4)
  1249.                 Exit Function
  1250.             End If
  1251.         Else
  1252.             Tsxx = "该单据可能被其他用户删除!"
  1253.             Call Xtxxts(Tsxx, 0, 4)
  1254.             Exit Function
  1255.         End If
  1256.         Flag = Not Trim(.Fields("invoiceflag"))
  1257.     End With
  1258.     '<<]
  1259.    
  1260.     On Error GoTo ErrTemp
  1261.     Cw_DataEnvi.DataConnect.BeginTrans
  1262.         '清除作废标识
  1263.         Cw_DataEnvi.DataConnect.Execute ("Update Xs_InvoiceBillMain Set InvalideMaker='" & Xtczy & "' Where InvoiceBillMainID='" & TempId) & "'"
  1264.         '回写发货单、订单
  1265.         strTemp = "select * from Xs_V_InvoiceConsign where InvoiceBillMainID = " & TempId
  1266.         Set RsTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  1267.         With RsTemp
  1268.             Do While Not .EOF
  1269.                 WareCode = Trim(.Fields("warecode"))
  1270.                 ConsignId = Trim(.Fields("consignbillmainid"))
  1271.                 Quantity = Val(.Fields("inv_quantity"))              '核销数量
  1272.                 '发货单
  1273.                 If RecTemp.State Then RecTemp.Close
  1274.                 strTemp = "select * from xs_consignbillsub where consignbillmainid='" & ConsignId & "' and warecode='" & WareCode & "'"
  1275.                 RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1276.                 If RecTemp.RecordCount > 0 Then
  1277.                     RecTemp.Fields("invquantity") = RecTemp.Fields("invquantity") - Quantity                '开票数量
  1278.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  1279.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))      '总金额(本币)
  1280.                     If Flag Then
  1281.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  1282.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))        '回款金额(本币)
  1283.                     End If
  1284.                 End If
  1285.                 RecTemp.Update
  1286.                 RecTemp.Close
  1287.                 '订单
  1288.                 strTemp = "select orderbillmainid from xs_consignbillmain where ConsignBillMainID = " & ConsignId
  1289.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(strTemp)
  1290.                 If RecTemp.RecordCount > 0 Then
  1291.                     OrderId = Val(RecTemp.Fields("orderbillmainid") & "")       '取订单号
  1292.                     If RecTemp.State Then RecTemp.Close
  1293.                     strTemp = "select * from xs_orderbillsub where orderbillmainid='" & OrderId & "' and warecode='" & WareCode & "'"
  1294.                     RecTemp.Open strTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  1295.                     If RecTemp.RecordCount > 0 Then                             '是否有订单
  1296.                     RecTemp.Fields("invoicequantity") = RecTemp.Fields("invoicequantity") - Quantity                '开票数量
  1297.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  1298.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  1299.                     If Flag Then
  1300.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  1301.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  1302.                     End If
  1303.                         RecTemp.Update
  1304.                         RecTemp.Close
  1305.                     End If
  1306.                 End If
  1307.                 .MoveNext
  1308.             Loop
  1309.         End With
  1310.         '现销回款
  1311.         If Flag Then
  1312.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillMain Set returnmoneyflag=0 Where ConsignBillMainID='" & TempId & "'")
  1313.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillSub Set settleallflag=0,capreturnmoney=0 Where ConsignBillMainID='" & TempId & "'")
  1314.             
  1315.             Sqlstr = "select * from Xs_V_CM Where Cbillid='" & ConsignId & "'"
  1316.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  1317.             If RecTemp.RecordCount > 0 Then
  1318.                 BackCode = Trim(RecTemp.Fields("MoneyWareCode"))
  1319.                 BackID = Trim(RecTemp.Fields("Mbillid"))        '回款单ID
  1320.             End If
  1321.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_ReturnMoney Where ReturnMoneyID='" & BackID & "'")
  1322.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_MoneyWare Where MoneyWareCode='" & BackCode & "'")
  1323.         End If
  1324.     Cw_DataEnvi.DataConnect.CommitTrans
  1325.     Inv_Cancel = True                   '作废成功
  1326.     Exit Function
  1327. ErrTemp:
  1328.     Cw_DataEnvi.DataConnect.RollbackTrans
  1329.     Tsxx = "作废时出错,数据被恢复!"
  1330.     Call Xtxxts(Tsxx, 0, 1)
  1331. End Function
  1332. '========以上为销售系统函数=====>>]