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

企业管理

开发平台:

Visual Basic

  1. Attribute VB_Name = "XtsyModule"
  2. '系统私有模块用来放置一些子系统独有的过程与函数
  3. Public str_Code As String                               '存储列内容参数
  4. Public FrmString As String
  5. Public GTempDeptCode As String
  6. Public GTempYear As Long
  7. Public GTempDeptName As String
  8. Public GtempInvoiceType As String   '发票窗体名称
  9. Public GtempInvoiceHB As String     '发票是否合并
  10. Dim sjgnbmStr As String                      '上级编码Public XsYear As String             '单据所在会计年
  11. Public XsYear As String               '单据所在会计年
  12. Public XsMm As String               '单据所在会计月
  13. Public GQuotationStatus As String   '报价单关闭状态
  14. Public Xs_IfConsign As Boolean      '是否根据发货单退货
  15. Public Xs_IfInvoice As Boolean      '现销是否根据应收回款开发票
  16. Dim Tsxx As String                  '系统提示信息
  17. Public GTempAnswer As String
  18. Public Sub Drxtztcs()                                   '读入系统帐套参数
  19.    
  20.     Dim Ztcsbrec As New ADODB.Recordset
  21.     Dim RecTemp As New ADODB.Recordset
  22.     Dim Sqlstr As String
  23.   
  24.     With Ztcsbrec
  25.         '金额总位数
  26.         .Open "Select * From Gy_AccInformation Where SystemCode='Cwzz'", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  27.         .MoveFirst
  28.         .Find "itemcode='cwjezws'"
  29.         If Not Ztcsbrec.EOF Then
  30.             Xtjezws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  31.         End If
  32.         
  33.         '数量总位数
  34.         .MoveFirst
  35.         .Find "itemcode='cwslzws'"
  36.         If Not Ztcsbrec.EOF Then
  37.             Xtslzws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  38.         End If
  39.    
  40.         '单价总位数
  41.         .MoveFirst
  42.         .Find "itemcode='cwdjzws'"
  43.         If Not Ztcsbrec.EOF Then
  44.             Xtdjzws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  45.         End If
  46.         
  47.         '金额小数位数
  48.         .MoveFirst
  49.         .Find "itemcode='cwjexsws'"
  50.         If Not Ztcsbrec.EOF Then
  51.             Xtjexsws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  52.         End If
  53.    
  54.         '数量小数位数
  55.         .MoveFirst
  56.         .Find "itemcode='cwslxsws'"
  57.         If Not Ztcsbrec.EOF Then
  58.             Xtslxsws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  59.         End If
  60.         
  61.         '单价小数位数
  62.         .MoveFirst
  63.         .Find "itemcode='cwdjxsws'"
  64.         If Not Ztcsbrec.EOF Then
  65.             Xtdjxsws = Val(Trim(Ztcsbrec.Fields("itemvalue")))
  66.         End If
  67.         .Close
  68.     End With
  69.   
  70. End Sub
  71. Public Function Xs_AddNew(XsDate As String) As Boolean
  72. Dim Tsxx As String
  73. Dim Sqlstr As String
  74. Dim RecTemp As New ADODB.Recordset
  75.     
  76.     Xs_AddNew = False
  77.     
  78.     Sqlstr = "Select * From Gy_kjrlb where qsrq<='" & Format(XsDate, "yyyy-mm-dd") & "' and zzrq>='" & Format(XsDate, "yyyy-mm-dd") & "'"
  79.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  80.     If RecTemp.RecordCount > 0 Then
  81.         If Trim(RecTemp.Fields("xsjzbz")) Then
  82.             Tsxx = "当前单据日期所在的会计期间已经结帐!"
  83.             Call Xtxxts(Tsxx, 0, 1)
  84.             Exit Function
  85.         End If
  86.         XsYear = RecTemp.Fields("KjYear")
  87.         XsMm = RecTemp.Fields("Period")
  88.         Xs_AddNew = True
  89.     Else
  90.         Tsxx = "当前单据日期的会计年没有设置!"
  91.         Call Xtxxts(Tsxx, 0, 1)
  92.         Exit Function
  93.     End If
  94.     
  95. End Function
  96. Public Function Xs_Dept(Index As Integer, LrText As Object) As Boolean
  97. Dim Tsxx As String
  98. Dim Sqlstr As String
  99. Dim RecTemp As New ADODB.Recordset
  100. Dim RsTemp As New ADODB.Recordset
  101.     
  102.     Xs_Dept = False
  103.     Sqlstr = "select * from gy_department where xsflag='1' and (deptcode='" & LrText & "' or deptname='" & LrText & "')"
  104.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  105.     If RecTemp.RecordCount > 0 Then
  106.         Sqlstr = "select * from gy_department where deptcode='" & RecTemp.Fields("ParentCode") & "'"
  107.         Set RsTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  108.         If RsTemp.RecordCount > 0 Then
  109.             Tsxx = "此部门不是末级部门!"
  110.             Call Xtxxts(Tsxx, 0, 1)
  111.             LrText(Index).SetFocus
  112.             Exit Function
  113.         End If
  114.     Else
  115.         Tsxx = "此部门名称不存在!"
  116.         Call Xtxxts(Tsxx, 0, 1)
  117.         LrText(Index).SetFocus
  118.         Exit Function
  119.     End If
  120.     Xs_Dept = True
  121. End Function
  122. Public Function Fun_GetInputCode(ParaItem As String) As String                                                      '读取应收应付系统基本科目
  123.     'ParaItem 是系统传递来的项目参数
  124.     
  125.     Dim RecTemp As New ADODB.Recordset
  126.     
  127.     Sqlstr = "SELECT Ccode From Rp_InputCode Where ItemCode='" & ParaItem & "'"
  128.             
  129.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  130.     
  131.     If Not RecTemp.EOF Then
  132.         Fun_GetInputCode = Trim(RecTemp.Fields("Ccode"))
  133.     Else
  134.         Fun_GetInputCode = ""
  135.     End If
  136. End Function
  137. Public Function Fun_InputCodeCustomer(ParaCus As String, Optional ArPr As Integer) As String                        '读取客户对应应收、预收科目
  138.     
  139.     'ParaCus 客户编码或客户名称   ArPr:0-默认应收科目 1-预收科目
  140.     
  141.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  142.     Dim Sqlstr As String                    '连接字符串
  143.     
  144.     Fun_InputCodeCustomer = ""
  145.     
  146.     Sqlstr = "SELECT ArAccCode,PrAccCode FROM Gy_Customer Where CusCode='" & ParaCus & "' OR CusName='" & ParaCus & "'"
  147.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  148.     
  149.     If Not RecTemp.EOF Then
  150.         Select Case ArPr
  151.             Case 0
  152.                 If Trim(RecTemp.Fields("ArAccCode") & "") <> "" Then
  153.                     Fun_InputCodeCustomer = Trim(RecTemp.Fields("ArAccCode") & "")
  154.                 Else
  155.                     Fun_InputCodeCustomer = Fun_GetInputCode("AR_ArAccCode")
  156.                 End If
  157.             Case 1
  158.                 If Trim(RecTemp.Fields("PrAccCode") & "") <> "" Then
  159.                     Fun_InputCodeCustomer = Trim(RecTemp.Fields("PrAccCode") & "")
  160.                 Else
  161.                     Fun_InputCodeCustomer = Fun_GetInputCode("AR_PrAccCode")
  162.                 End If
  163.         End Select
  164.     End If
  165.     
  166. End Function
  167. Public Function Fun_InputCodeSellTax(MaterialCode As String, Optional SellTax As Integer) As String           '读取存货对应销售收入和应交增值税科目
  168.     
  169.     'MaterialCode 存货编码  SellTax:0-默认销售收入科目 1-应交增值税科目
  170.     
  171.     Dim RecTemp As New ADODB.Recordset      '临时使用动态集
  172.     Dim Sqlstr As String                    '连接字符串
  173.     
  174.     Fun_InputCodeSellTax = ""
  175.     
  176.     Sqlstr = "SELECT SellAccCode,SellTaxAccCode FROM Gy_Material Where MNumber='" & MaterialCode & "' OR Mname='" & MaterialCode & "'"
  177.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  178.     
  179.     If Not RecTemp.EOF Then
  180.         Select Case SellTax
  181.             Case 0
  182.                 If Trim(RecTemp.Fields("SellAccCode") & "") <> "" Then
  183.                     Fun_InputCodeSellTax = Trim(RecTemp.Fields("SellAccCode") & "")
  184.                 Else
  185.                     Fun_InputCodeSellTax = Fun_GetInputCode("AR_SellAccCode")
  186.                 End If
  187.             Case 1
  188.                 If Trim(RecTemp.Fields("SellTaxAccCode") & "") <> "" Then
  189.                     Fun_InputCodeSellTax = Trim(RecTemp.Fields("SellTaxAccCode") & "")
  190.                 Else
  191.                     Fun_InputCodeSellTax = Fun_GetInputCode("AR_SellTaxAccCode")
  192.                 End If
  193.         End Select
  194.     End If
  195.     
  196. End Function
  197. Public Sub Sub_SysControl()                '读入系统参数设置
  198.     Dim RecTemp As New ADODB.Recordset
  199.     Dim intNum As Integer
  200.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute("select * from gy_accinformation where systemcode='Xs'")
  201.     With RecTemp
  202.         Do While Not .EOF
  203.             Select Case Trim(.Fields("itemcode"))
  204.                 Case "Xs_IfConsign"
  205.                     Xs_IfConsign = Val(.Fields("itemvalue"))
  206.                 Case "Xs_IfInvoice"
  207.                     Xs_IfInvoice = Val(.Fields("itemvalue"))
  208.             End Select
  209.             .MoveNext
  210.         Loop
  211.         .Close
  212.     End With
  213.     Set RecTemp = Nothing
  214.     
  215. End Sub
  216. Public Function Inv_Check(TempId As Integer) As Boolean             '审核发票
  217.     Dim StrTemp As String
  218.     Dim RecTemp As New ADODB.Recordset
  219.     Dim RsTemp As New ADODB.Recordset
  220.     Dim WareCode As String
  221.     Dim OrderId As Integer
  222.     Dim ConsignId As Integer
  223.     Dim Flag As Boolean                 '是否现销
  224.     Dim Quantity As Double              '核销数量
  225.     Dim BackID As Integer               '回款单ID
  226.     Dim BackCode As String              '回款单号
  227.     Dim CreateCode As String            '核销单号
  228.     
  229.     Inv_Check = False
  230.     
  231.     StrTemp = "Select Checker,invoiceflag From Xs_InvoiceBillMain Where InvoiceBillMainID='" & TempId & "'"
  232.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  233.     With RecTemp
  234.         If Not .EOF Then
  235.             If Trim(.Fields("Checker") & "") <> "" Then
  236.                 Tsxx = "该单据已审核,不能再审核!"
  237.                 Call Xtxxts(Tsxx, 0, 4)
  238.                 Exit Function
  239.             End If
  240.         Else
  241.             Tsxx = "该单据可能被其他用户删除!"
  242.             Call Xtxxts(Tsxx, 0, 4)
  243.             Exit Function
  244.         End If
  245.         Flag = Not Trim(.Fields("invoiceflag"))
  246.     End With
  247.     '<<]
  248.     '审核数据判断
  249.     StrTemp = "select * from xs_V_invoiceconsign where InvoiceBillMainID = " & TempId
  250.     Set RsTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  251.     With RsTemp
  252.         Do While Not .EOF
  253.             If Abs(.Fields("RecQuantity")) - Abs(.Fields("InvQuantity")) < Abs(.Fields("Inv_Quantity")) Then
  254.                 Tsxx = "该发票中货物 ' " & Trim(.Fields("warename")) & " ' 的开票数量太大!"
  255.                 Call Xtxxts(Tsxx, 0, 4)
  256.                 Exit Function
  257.             End If
  258.             .MoveNext
  259.         Loop
  260.     End With
  261.     On Error GoTo ErrTemp
  262.     Cw_DataEnvi.DataConnect.BeginTrans
  263.         '将单据写入审核标识
  264.         Cw_DataEnvi.DataConnect.Execute ("Update Xs_InvoiceBillMain Set Checker='" & Xtczy & "' Where InvoiceBillMainID='" & TempId) & "'"
  265.         '回写发货单、订单
  266.         StrTemp = "select * from Xs_V_InvoiceConsign where InvoiceBillMainID = " & TempId
  267.         Set RsTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  268.         With RsTemp
  269.             If Flag Then            '现销产生回款单
  270.                 '回写发货单数据
  271.                 Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillMain Set returnmoneyflag=1 Where ConsignBillMainID='" & TempId & "'")
  272.                 Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillSub Set settleallflag=1,capreturnmoney=capitalwhole Where ConsignBillMainID='" & TempId & "'")
  273.                 
  274.                 BackID = CreatBillID(1408)
  275.                 BackCode = CreatBillCode(1408, True)
  276.                 CreateCode = CreatBillCode(1409, True)
  277.                 '生成回款单
  278.                 If RecTemp.State Then RecTemp.Close
  279.                 RecTemp.Open "Select * From Xs_ReturnMoney Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  280.                     RecTemp.AddNew
  281.                     RecTemp.Fields("kjyear") = Xtyear          '会计年
  282.                     RecTemp.Fields("period") = Xtmm            '会计月
  283.                     RecTemp.Fields("ReturnDate") = Format(Xtrq, "yyyy-mm-dd")           '回款日期
  284.                     RecTemp.Fields("ReturnMoneyID") = BackID                          '回款ID
  285.                     RecTemp.Fields("ReturnMoneyCode") = BackCode                        '回款单号
  286.                     RecTemp.Fields("cusCode") = Trim(.Fields("cuscode") & "")           '客户编码
  287.                     RecTemp.Fields("deptCode") = Trim(.Fields("deptcode") & "")         '部门编码
  288.                     RecTemp.Fields("personCode") = Trim(.Fields("personcode") & "")     '职员编码
  289.                     RecTemp.Fields("foreigncurrcode") = Trim(.Fields("foreigncurrcode") & "")   '币种
  290.                     RecTemp.Fields("exchrate") = Trim(.Fields("exchrate") & "")         '汇率
  291.                     RecTemp.Fields("ConVertFlag") = .Fields("ConVertFlag")              '折算方式
  292.                     RecTemp.Fields("CapitalRemainMoney") = 0                            '核销剩余金额(原币)
  293.                     RecTemp.Fields("signdate") = Format(Xtrq, "yyyy-mm-dd")             '签收日期
  294.                     RecTemp.Fields("maker") = Trim(Xtczy & "")                          '制单人
  295.                     RecTemp.Fields("makerdate") = Format(Xtrq, "yyyy-mm-dd")            '制单日期
  296.                     RecTemp.Fields("checker") = Trim(Xtczy & "")                        '审核人
  297.                     RecTemp.Fields("checkerdate") = Format(Xtrq, "yyyy-mm-dd")          '审核日期
  298.                     RecTemp.Update
  299.                     RecTemp.Close
  300.                 '回写回款单核销关系
  301.                 StrTemp = "select * from Xs_MoneyWare where 1=2"
  302.                 RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  303.                     RecTemp.AddNew
  304.                     RecTemp.Fields("MoneyWareCode") = CreateCode            '标识为同次核销
  305.                     RecTemp.Fields("kjyear") = Xtyear
  306.                     RecTemp.Fields("period") = Xtmm
  307.                     RecTemp.Fields("billtype") = 0
  308.                     RecTemp.Fields("billid") = BackID                         '回款单ID
  309.                     RecTemp.Fields("billcode") = BackCode                       '回款单号
  310.                     RecTemp.Fields("cuscode") = Trim(.Fields("cuscode") & "")   '客户
  311.                     RecTemp.Fields("CapitalUsedMoney") = 0                      '本币核销金额
  312.                     RecTemp.Fields("verifier") = Xtczy
  313.                     RecTemp.Fields("verifierdate") = Format(Xtrq, "yyyy-mm-dd")
  314.                     RecTemp.Update
  315.             End If
  316.             
  317.             Do While Not .EOF
  318.                 WareCode = Trim(.Fields("warecode"))
  319.                 ConsignId = Trim(.Fields("consignbillmainid"))
  320.                 Quantity = Val(.Fields("inv_quantity"))              '核销数量
  321.                 '发货单
  322.                 If RecTemp.State Then RecTemp.Close
  323.                 StrTemp = "select * from xs_consignbillsub where consignbillmainid='" & ConsignId & "' and warecode='" & WareCode & "'"
  324.                 RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  325.                 If RecTemp.RecordCount > 0 Then
  326.                     RecTemp.Fields("invquantity") = RecTemp.Fields("invquantity") + Quantity                '开票数量
  327.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") + Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  328.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  329.                     If Flag Then
  330.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") + Quantity * Val(.Fields("TaxUnitPrice"))           '回款金额(原币)
  331.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  332.                         RecTemp.Update
  333.                         RecTemp.Close
  334.                         '回款单
  335.                         Cw_DataEnvi.DataConnect.Execute ("Update Xs_ReturnMoney set ReturnMoney=ReturnMoney+ cast('" & Quantity * Val(.Fields("TaxUnitPrice")) & "' as money),CapitalReturnMoney" & _
  336.                                 "=CapitalReturnMoney+ cast( '" & Quantity * Val(.Fields("capitalTaxUnitPrice")) & "' as money) where ReturnMoneyID = '" & BackID & "'")
  337.                         '回款单核销关系
  338.                         Cw_DataEnvi.DataConnect.Execute ("Update Xs_MoneyWare set CapitalUsedMoney=CapitalUsedMoney+ cast( '" & Quantity * Val(.Fields("capitalTaxUnitPrice")) & "' as money) " & _
  339.                                 " where billid = '" & BackID & "' and billtype=0")
  340.                         '发货单核销关系
  341.                         StrTemp = "select * from Xs_MoneyWare where 1=2"
  342.                         RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  343.                             RecTemp.AddNew
  344.                             RecTemp.Fields("MoneyWareCode") = CreateCode        '标识为同次核销
  345.                             RecTemp.Fields("kjyear") = Xtyear
  346.                             RecTemp.Fields("period") = Xtmm
  347.                             RecTemp.Fields("billtype") = 1
  348.                             RecTemp.Fields("billid") = Trim(.Fields("consignbillmainid"))       '发货单ID
  349.                             RecTemp.Fields("billcode") = Trim(.Fields("consigncode"))           '发货单号
  350.                             RecTemp.Fields("cuscode") = Trim(.Fields("cuscode"))                '客户
  351.                             RecTemp.Fields("warecode") = WareCode                               '货物编码
  352.                             RecTemp.Fields("CapitalUsedMoney") = Quantity * Val(.Fields("capitalTaxUnitPrice"))     '本币核销金额
  353.                             RecTemp.Fields("verifier") = Xtczy
  354.                             RecTemp.Fields("verifierdate") = Format(Xtrq, "yyyy-mm-dd")
  355.                     End If
  356.                 End If
  357.                 RecTemp.Update
  358.                 RecTemp.Close
  359.                 '订单
  360.                 StrTemp = "select orderbillmainid from xs_consignbillmain where ConsignBillMainID = " & ConsignId
  361.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  362.                 If RecTemp.RecordCount > 0 Then
  363.                     OrderId = Val(RecTemp.Fields("orderbillmainid") & "")       '取订单号
  364.                     If RecTemp.State Then RecTemp.Close
  365.                     StrTemp = "select * from xs_orderbillsub where orderbillmainid='" & OrderId & "' and warecode='" & WareCode & "'"
  366.                     RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  367.                     If RecTemp.RecordCount > 0 Then                             '是否有订单
  368.                     RecTemp.Fields("invoicequantity") = RecTemp.Fields("invoicequantity") + Quantity                '开票数量
  369.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") + Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  370.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  371.                     If Flag Then
  372.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") + Quantity * Val(.Fields("TaxUnitPrice"))           '回款金额(原币)
  373.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") + Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  374.                     End If
  375.                         RecTemp.Update
  376.                         RecTemp.Close
  377.                     End If
  378.                 End If
  379.                 .MoveNext
  380.             Loop
  381.         End With
  382.     Cw_DataEnvi.DataConnect.CommitTrans
  383.     
  384.     Inv_Check = True
  385.     Exit Function
  386.     
  387. ErrTemp:
  388.     Cw_DataEnvi.DataConnect.RollbackTrans
  389.     Tsxx = "审核时出错,数据被恢复!"
  390.     Call Xtxxts(Tsxx, 0, 1)
  391. End Function
  392. Public Function Inv_UnCheck(TempId As Integer) As Boolean               '弃审发票
  393.     Dim StrTemp As String
  394.     Dim RecTemp As New ADODB.Recordset
  395.     Dim RsTemp As New ADODB.Recordset
  396.     Dim WareCode As String
  397.     Dim OrderId As Integer
  398.     Dim ConsignId As Integer
  399.     Dim Flag As Boolean                 '是否现销
  400.     Dim Quantity As Double              '核销数量
  401.     Dim BackID As Integer               '回款ID
  402.     Dim BackCode As String              '回款单号
  403.         
  404.     Inv_UnCheck = False
  405.     
  406.     StrTemp = "Select Checker,AccountOpt,ArBookFlag,InvalideMaker,invoiceflag From Xs_InvoiceBillMain Where InvoiceBillMainID=" & TempId
  407.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  408.     With RecTemp
  409.         If Not .EOF Then
  410.             If Trim(.Fields("Checker") & "") = "" Then
  411.                 Tsxx = "该单据未审核,不允许再弃审!"
  412.                 Call Xtxxts(Tsxx, 0, 4)
  413.                 Exit Function
  414.             End If
  415.             If Trim(.Fields("AccountOpt") & "") <> "" Then
  416.                 Tsxx = "该单据已经结帐,不允许弃审!"
  417.                 Call Xtxxts(Tsxx, 0, 4)
  418.                 Exit Function
  419.             End If
  420.             If Trim(.Fields("ArBookFlag") & "") = 1 Then
  421.                 Tsxx = "该单据已被应收系统使用,不允许弃审!"
  422.                 Call Xtxxts(Tsxx, 0, 4)
  423.                 Exit Function
  424.             End If
  425.             If Trim(.Fields("InvalideMaker") & "") <> "" Then
  426.                 Tsxx = "该单据已被作废,不允许弃审!"
  427.                 Call Xtxxts(Tsxx, 0, 4)
  428.                 Exit Function
  429.             End If
  430.         Else
  431.             Tsxx = "该单据可能被其他用户删除!"
  432.             Call Xtxxts(Tsxx, 0, 4)
  433.             Exit Function
  434.         End If
  435.         Flag = Not Trim(.Fields("invoiceflag"))
  436.     End With
  437.     '<<]
  438.    
  439.     On Error GoTo ErrTemp
  440.     Cw_DataEnvi.DataConnect.BeginTrans
  441.         '将单据清除审核标识
  442.         Cw_DataEnvi.DataConnect.Execute ("Update Xs_InvoiceBillMain Set Checker='' Where InvoiceBillMainID='" & TempId) & "'"
  443.         '回写发货单、订单
  444.         StrTemp = "select * from Xs_V_InvoiceConsign where InvoiceBillMainID = " & TempId
  445.         Set RsTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  446.         With RsTemp
  447.             Do While Not .EOF
  448.                 WareCode = Trim(.Fields("warecode"))
  449.                 ConsignId = Trim(.Fields("consignbillmainid"))
  450.                 Quantity = Val(.Fields("inv_quantity"))              '核销数量
  451.                 '发货单
  452.                 If RecTemp.State Then RecTemp.Close
  453.                 StrTemp = "select * from xs_consignbillsub where consignbillmainid='" & ConsignId & "' and warecode='" & WareCode & "'"
  454.                 RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  455.                 If RecTemp.RecordCount > 0 Then
  456.                     RecTemp.Fields("invquantity") = RecTemp.Fields("invquantity") - Quantity                '开票数量
  457.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  458.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))      '总金额(本币)
  459.                     If Flag Then
  460.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  461.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))        '回款金额(本币)
  462.                     End If
  463.                 End If
  464.                 RecTemp.Update
  465.                 RecTemp.Close
  466.                 '订单
  467.                 StrTemp = "select orderbillmainid from xs_consignbillmain where ConsignBillMainID = " & ConsignId
  468.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  469.                 If RecTemp.RecordCount > 0 Then
  470.                     OrderId = Val(RecTemp.Fields("orderbillmainid") & "")       '取订单号
  471.                     If RecTemp.State Then RecTemp.Close
  472.                     StrTemp = "select * from xs_orderbillsub where orderbillmainid='" & OrderId & "' and warecode='" & WareCode & "'"
  473.                     RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  474.                     If RecTemp.RecordCount > 0 Then                             '是否有订单
  475.                     RecTemp.Fields("invoicequantity") = RecTemp.Fields("invoicequantity") - Quantity                '开票数量
  476.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  477.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  478.                     If Flag Then
  479.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  480.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  481.                     End If
  482.                         RecTemp.Update
  483.                         RecTemp.Close
  484.                     End If
  485.                 End If
  486.                 .MoveNext
  487.             Loop
  488.         End With
  489.         '现销回款
  490.         If Flag Then
  491.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillMain Set returnmoneyflag=0 Where ConsignBillMainID='" & TempId & "'")
  492.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillSub Set settleallflag=0,capreturnmoney=0 Where ConsignBillMainID='" & TempId & "'")
  493.             
  494.             Sqlstr = "select * from Xs_V_CM Where Cbillid='" & ConsignId & "'"
  495.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  496.             If RecTemp.RecordCount > 0 Then
  497.                 BackCode = Trim(RecTemp.Fields("MoneyWareCode"))
  498.                 BackID = Trim(RecTemp.Fields("Mbillid"))        '回款单ID
  499.             End If
  500.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_ReturnMoney Where ReturnMoneyID='" & BackID & "'")
  501.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_MoneyWare Where MoneyWareCode='" & BackCode & "'")
  502.         End If
  503.     Cw_DataEnvi.DataConnect.CommitTrans
  504.     Inv_UnCheck = True
  505.     Exit Function
  506. ErrTemp:
  507.     Cw_DataEnvi.DataConnect.RollbackTrans
  508.     Tsxx = "弃审时出错,数据被恢复!"
  509.     Call Xtxxts(Tsxx, 0, 1)
  510. End Function
  511. Public Function Inv_Cancel(TempId As Integer) As Boolean               '发票作废
  512.     Dim StrTemp As String
  513.     Dim RecTemp As New ADODB.Recordset
  514.     Dim RsTemp As New ADODB.Recordset
  515.     Dim WareCode As String
  516.     Dim OrderId As Integer
  517.     Dim ConsignId As Integer
  518.     Dim Flag As Boolean                 '是否现销
  519.     Dim Quantity As Double              '核销数量
  520.     Dim BackID As Integer               '回款ID
  521.     Dim BackCode As String              '回款单号
  522.     
  523.     Inv_Cancel = False
  524.     
  525.     StrTemp = "Select Checker,AccountOpt,ArBookFlag,InvalideMaker,invoiceflag From Xs_InvoiceBillMain Where InvoiceBillMainID=" & TempId
  526.     Set RecTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  527.     With RecTemp
  528.         If Not .EOF Then
  529.             If Trim(.Fields("Checker") & "") = "" Then
  530.                 Tsxx = "该单据未审核,不允许作废!"
  531.                 Call Xtxxts(Tsxx, 0, 4)
  532.                 Exit Function
  533.             End If
  534.             If Trim(.Fields("AccountOpt") & "") <> "" Then
  535.                 Tsxx = "该单据已经结帐,不允许作废!"
  536.                 Call Xtxxts(Tsxx, 0, 4)
  537.                 Exit Function
  538.             End If
  539.             If Trim(.Fields("ArBookFlag") & "") = 1 Then
  540.                 Tsxx = "该单据已被应收系统使用,不允许作废!"
  541.                 Call Xtxxts(Tsxx, 0, 4)
  542.                 Exit Function
  543.             End If
  544.             If Trim(.Fields("InvalideMaker") & "") <> "" Then
  545.                 Tsxx = "该单据已被作废,不允许再作废!"
  546.                 Call Xtxxts(Tsxx, 0, 4)
  547.                 Exit Function
  548.             End If
  549.         Else
  550.             Tsxx = "该单据可能被其他用户删除!"
  551.             Call Xtxxts(Tsxx, 0, 4)
  552.             Exit Function
  553.         End If
  554.         Flag = Not Trim(.Fields("invoiceflag"))
  555.     End With
  556.     '<<]
  557.    
  558.     On Error GoTo ErrTemp
  559.     Cw_DataEnvi.DataConnect.BeginTrans
  560.         '清除作废标识
  561.         Cw_DataEnvi.DataConnect.Execute ("Update Xs_InvoiceBillMain Set InvalideMaker='" & Xtczy & "' Where InvoiceBillMainID='" & TempId) & "'"
  562.         '回写发货单、订单
  563.         StrTemp = "select * from Xs_V_InvoiceConsign where InvoiceBillMainID = " & TempId
  564.         Set RsTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  565.         With RsTemp
  566.             Do While Not .EOF
  567.                 WareCode = Trim(.Fields("warecode"))
  568.                 ConsignId = Trim(.Fields("consignbillmainid"))
  569.                 Quantity = Val(.Fields("inv_quantity"))              '核销数量
  570.                 '发货单
  571.                 If RecTemp.State Then RecTemp.Close
  572.                 StrTemp = "select * from xs_consignbillsub where consignbillmainid='" & ConsignId & "' and warecode='" & WareCode & "'"
  573.                 RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  574.                 If RecTemp.RecordCount > 0 Then
  575.                     RecTemp.Fields("invquantity") = RecTemp.Fields("invquantity") - Quantity                '开票数量
  576.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  577.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))      '总金额(本币)
  578.                     If Flag Then
  579.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  580.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))        '回款金额(本币)
  581.                     End If
  582.                 End If
  583.                 RecTemp.Update
  584.                 RecTemp.Close
  585.                 '订单
  586.                 StrTemp = "select orderbillmainid from xs_consignbillmain where ConsignBillMainID = " & ConsignId
  587.                 Set RecTemp = Cw_DataEnvi.DataConnect.Execute(StrTemp)
  588.                 If RecTemp.RecordCount > 0 Then
  589.                     OrderId = Val(RecTemp.Fields("orderbillmainid") & "")       '取订单号
  590.                     If RecTemp.State Then RecTemp.Close
  591.                     StrTemp = "select * from xs_orderbillsub where orderbillmainid='" & OrderId & "' and warecode='" & WareCode & "'"
  592.                     RecTemp.Open StrTemp, Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
  593.                     If RecTemp.RecordCount > 0 Then                             '是否有订单
  594.                     RecTemp.Fields("invoicequantity") = RecTemp.Fields("invoicequantity") - Quantity                '开票数量
  595.                     RecTemp.Fields("invoiceMoney") = RecTemp.Fields("invoiceMoney") - Quantity * Val(.Fields("TaxUnitPrice"))          '总金额(原币)
  596.                     RecTemp.Fields("CapInvoiceMoney") = RecTemp.Fields("CapInvoiceMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))     '总金额(本币)
  597.                     If Flag Then
  598.                         RecTemp.Fields("ReturnMoney") = RecTemp.Fields("ReturnMoney") - Quantity * Val(.Fields("TaxUnitPrice"))            '回款金额(原币)
  599.                         RecTemp.Fields("CapReturnMoney") = RecTemp.Fields("CapReturnMoney") - Quantity * Val(.Fields("capitalTaxUnitPrice"))  '回款金额(本币)
  600.                     End If
  601.                         RecTemp.Update
  602.                         RecTemp.Close
  603.                     End If
  604.                 End If
  605.                 .MoveNext
  606.             Loop
  607.         End With
  608.         '现销回款
  609.         If Flag Then
  610.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillMain Set returnmoneyflag=0 Where ConsignBillMainID='" & TempId & "'")
  611.             Cw_DataEnvi.DataConnect.Execute ("Update Xs_ConsignBillSub Set settleallflag=0,capreturnmoney=0 Where ConsignBillMainID='" & TempId & "'")
  612.             
  613.             Sqlstr = "select * from Xs_V_CM Where Cbillid='" & ConsignId & "'"
  614.             Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
  615.             If RecTemp.RecordCount > 0 Then
  616.                 BackCode = Trim(RecTemp.Fields("MoneyWareCode"))
  617.                 BackID = Trim(RecTemp.Fields("Mbillid"))        '回款单ID
  618.             End If
  619.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_ReturnMoney Where ReturnMoneyID='" & BackID & "'")
  620.             Cw_DataEnvi.DataConnect.Execute ("delete Xs_MoneyWare Where MoneyWareCode='" & BackCode & "'")
  621.         End If
  622.     Cw_DataEnvi.DataConnect.CommitTrans
  623.     Inv_Cancel = True                   '作废成功
  624.     Exit Function
  625. ErrTemp:
  626.     Cw_DataEnvi.DataConnect.RollbackTrans
  627.     Tsxx = "作废时出错,数据被恢复!"
  628.     Call Xtxxts(Tsxx, 0, 1)
  629. End Function