来自「VB开发的ERP系统」· 代码 · 共 1,480 行 · 第 1/5 页

TXT
1,480
字号
            
            Je = Dhj
            Call Save_TempPz_Ass(lng_OperationNum, I, Trim(Rec_AutoTranItem.Fields("Digest")), Trim(Rec_AutoTranItem.Fields("Ccode")), Trim(Rec_AutoTranItem.Fields("DeptCode") & ""), Trim(Rec_AutoTranItem.Fields("PersonCode") & ""), Trim(Rec_AutoTranItem.Fields("CusCode") & ""), Trim(Rec_AutoTranItem.Fields("Suppliercode") & ""), Trim(Rec_AutoTranItem.Fields("ItemCode") & ""), Trim(Rec_AutoTranItem.Fields("TranOri")))
            Rec_AutoTranItem.MoveNext
        Loop
        If Dhj = 0 Then
            '删除空凭证主从表
            Cw_DataEnvi.DataConnect.Execute "Delete From Cwzz_AccVouchSubTemp Where VouchId=lng_OperationNum"
            Cw_DataEnvi.DataConnect.Execute "Delete From Cwzz_AccVouchMainTemp Where VouchId=lng_OperationNum"
        End If
        
        If hjje = 0 Then              '合计金额
            '删除空凭证主从表
            Sqlstr = "Delete From Cwzz_AccVouchSubTemp Where VouchId=" & lng_OperationNum
            Cw_DataEnvi.DataConnect.Execute Sqlstr
            Sqlstr = "Delete From Cwzz_AccVouchMainTemp Where VouchId=" & lng_OperationNum
            Cw_DataEnvi.DataConnect.Execute Sqlstr
            VoidStr = VoidStr + Str(jsq) + " "
            TranCount = TranCount - 1
        End If
        
    Next jsq
    
    Cw_DataEnvi.DataConnect.CommitTrans
    
    '没有有效凭证生成,即金额、数量均为0
    If Len(VoidStr) <> 0 Then
        Tsxx = "第" & VoidStr & "张凭证没有发生额,不需要结转!"
        Call Xtxxts(Tsxx, 0, 4)
    End If
    
    If TranCount > 0 Then       '记录生成凭证的个数
        '记录此次转帐的批号,做为凭证窗体调用的参数
        
        AutoTran_PzFrm.OperationNumPz = OperationNum
        AutoTran_PzFrm.vouchsourcePz = "自动转帐"
        '调入凭证制作窗体
        AutoTran_PzFrm.Show 1
        
        
        '为在转帐过程列表的网格中重新显示制单日期和操作员,防止虽转完,但无痕迹
        Call Write_Date
        Call Clean
    End If
    Call Cxnrtcwg
    Exit Sub
    
Err1:
    Cw_DataEnvi.DataConnect.RollbackTrans
    Tsxx = "转帐过程中出现未知错误,程序自动恢复保存前状态!"
    Call Xtxxts(Tsxx, 0, 1)
    Exit Sub
    
End Sub


Public Sub Balance(TjMain As String, TjList As String, TjAss As String) '期末余额子过程
    
    Je = 0
    Sl = 0
    ItemSl = 0
    
    '[从科目总帐或辅助帐取年初余额
    If TjAss = "" Then
        Sqlstr = "select * from  Cwzz_AccSum  where " & TjMain & " and Year='" & Int_Year & "' and period='" & Xtmm & " '"                          '从科目总帐取月初余额"
    Else
        Sqlstr = "select * from Cwzz_AccSumAssi  where " & TjMain & "and " & TjAss & " and Year='" & Int_Year & "'   and period='" & Xtmm & " '"    '从辅助总帐取年初余额
    End If
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    
    '余额赋初值
    If RecTemp.EOF = False Then
        Je = Trim(RecTemp.Fields("qcye") & "") '改为本月期初余额(bsj 2001-10-16)
        Sl = Trim(RecTemp.Fields("qcsl") & "") '改为本月期初余额(bsj 2001-10-16)
        
        If TjAss <> "" Then
            ItemSl = Trim(RecTemp.Fields("YcItemsl") & "")
        End If
    End If
    '[从科目总帐或辅助帐取年初余额
    
    
    '[从凭证明细取累计借方\贷方发生额\计算期末余额
    Sqlstr = "SELECT ccode,Debi_Je=Sum(Jfje),Debi_Sl=Sum(Jfsl),Debi_Itemsl=sum(Itemjfsl),Lender_Je=Sum(Dfje),Lender_Sl=Sum(dfsl)," & _
    "Lender_Itemsl=sum(ItemDfsl) FROM Cwzz_V_AccVouch "
    
    If TjAss = "" Then                                  '无辅助项目核算
        Sqlstr = Sqlstr + " where " & TjList & ""
    Else
        Sqlstr = Sqlstr + " Where " & TjList & " and " & TjAss & ""
    End If
    
    '若不包含未记帐凭证,再增加一个限制
    If Chk_Vouch.Value = 0 Then
        Sqlstr = Sqlstr & " and BookFlag='1' "
    End If
    
    Sqlstr = Sqlstr + " and Year='" & Int_Year & "'  and Period='" & Int_Period & "' group by ccode " '(取本月数 bsj 2001-10-16)
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    
    '计算期末余额
    If RecTemp.EOF = False Then
        Do While RecTemp.EOF = False
            Je = Je + Val(RecTemp.Fields("Debi_je") & "") - Val(RecTemp.Fields("Lender_je") & "")
            Sl = Sl + Val(RecTemp.Fields("Debi_sl") & "") - Val(RecTemp.Fields("Lender_sl") & "")
            If TjAss <> "" Then
                ItemSl = ItemSl + Val(RecTemp.Fields("Debi_Itemsl") & "") - Val(RecTemp.Fields("Lender_Itemsl") & "")
            End If
            RecTemp.MoveNext
        Loop
    End If
    ']从凭证明细取累计借方\贷方发生额\计算期末余额
    
End Sub

Public Sub Debi(TjList As String, TjAss As String)       ''从凭证明细帐求本期借方发生额
    'TjList为计算明细帐发生额的条件,TjAss 有辅助项目核算的条件
    Je = 0
    Sl = 0
    ItemSl = 0
    
    Sqlstr = "SELECT Debi_Je=Sum(Jfje),Debi_Sl=Sum(Jfsl),Debi_Itemsl=sum(Itemjfsl) " & _
    "FROM Cwzz_V_AccVouch "
    If TjAss = "" Then
        Sqlstr = Sqlstr + "where " & TjList & " "
    Else
        Sqlstr = Sqlstr + "where " & TjList & " and " & TjAss & " "
    End If
    If Chk_Vouch.Value = 0 Then         '不包含未记帐凭证
        Sqlstr = Sqlstr & " and BookFlag='1'"
    End If
    Sqlstr = Sqlstr + " and Year='" & Int_Year & "'  and Period='" & Int_Period & "' Group by Ccode"
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    If RecTemp.EOF = False Then
        Do While RecTemp.EOF = False
            Je = Je + Val(RecTemp.Fields("Debi_Je") & "")
            Sl = Sl + Val(RecTemp.Fields("Debi_Sl") & "")
            ItemSl = ItemSl + Val(RecTemp.Fields("Debi_ItemSl") & "")
            RecTemp.MoveNext
        Loop
    End If
End Sub

Public Sub Lender(TjList As String, TjAss As String)        ''从凭证明细帐求本期贷方发生额
    'TjList为计算明细帐发生额的条件,TjAss 有辅助项目核算的条件
    Je = 0
    Sl = 0
    ItemSl = 0
    
    Sqlstr = "SELECT Lender_Je=Sum(Dfje),Lender_Sl=Sum(Dfsl),Lender_ItemSl=sum(ItemDfsl) " & _
    "FROM Cwzz_V_AccVouch "
    If TjAss = "" Then
        Sqlstr = Sqlstr + "where " & TjList & " "
    Else
        Sqlstr = Sqlstr + "where " & TjList & " and " & TjAss & " "
    End If
    If Chk_Vouch.Value = 0 Then         '不包含未记帐凭证
        Sqlstr = Sqlstr & " and BookFlag='1'"
    End If
    Sqlstr = Sqlstr + " and Year='" & Int_Year & "'  and Period='" & Int_Period & "' Group by Ccode"
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    If RecTemp.EOF = False Then
        Do While RecTemp.EOF = False
            Je = Je + Val(RecTemp.Fields("Lender_Je") & "")
            Sl = Sl + Val(RecTemp.Fields("Lender_Sl") & "")
            ItemSl = ItemSl + Val(RecTemp.Fields("Lender_ItemSl") & "")
            RecTemp.MoveNext
        Loop
    End If
End Sub

Public Sub Balance_Sy(TjMain As String, TjList As String, TjAss As String) '期间损益结转,以明细帐为循环体求总帐中不符合条件的科目期末余额
    'TjMain为取年初余额的条件,TjList为计算明细帐发生额的条件,TjAss 有辅助项目核算的条件
    'Je表示期末余额,Sl表示期末余数量
    Je = 0
    Sl = 0
    ItemSl = 0
    
    '[从凭证明细取累计借方、贷方发生额等
    Sqlstr = "SELECT ccode,Debi_Je=Sum(Jfje),Debi_Sl=Sum(Jfsl),Lender_Je=Sum(Dfje),Lender_Sl=Sum(dfsl) FROM Cwzz_V_AccVouch "
    
    If TjAss = "" Then         '无辅助项目核算时
        Sqlstr = Sqlstr + "Where " & TjList & " "
    Else
        Sqlstr = Sqlstr + "Where " & TjList & " and " & TjAss & " "
    End If
    
    '若不包含未记帐凭证,再增加一个限制
    If Chk_Vouch.Value = 0 Then
        Sqlstr = Sqlstr & " and BookFlag='1'"
    End If
    Sqlstr = Sqlstr + " and Year='" & Int_Year & "'  and Period<='" & Int_Period & "' group by ccode "
    Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    
    '计算期末余额
    If RecTemp.EOF = False Then
        Je = Je + Val(RecTemp.Fields("Debi_je") & "") - Val(RecTemp.Fields("Lender_je") & "")
        Sl = Sl + Val(RecTemp.Fields("Debi_sl") & "") - Val(RecTemp.Fields("Lender_sl") & "")
    End If
    
    '再搜索总帐中是否存在该辅助条件的记录,若存在则不参与计算,因为在上面的明细帐汇总时已经计算过,需要剔除掉.
    If TjAss = "" Then
        Sqlstr = "SELECT * from  Cwzz_AccSum  where " & TjMain & " and Year='" & Int_Year & "' and period=1 " '从科目总帐取年初余额"
        Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    Else
        Sqlstr = "select * from Cwzz_AccSumAssi  where " & TjMain & "and " & TjAss & " and Year='" & Int_Year & "' and period=1"    '从辅助总帐取年初余额
        Set RecTemp = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
    End If
    If RecTemp.EOF = False Then
        Je = 0
        Sl = 0
    End If
End Sub


Private Sub Save_TempPz_Main(TranVouchClass1 As String, TranNo As String, OperationNum1 As Integer, VouchIdTemp_Id As Long) '将有效数据写入临时凭证主表。(先写辅表再写主表,为了防止在主表中写入没有发生额的空凭证记录)
    Dim Rec_VouchMainTemp As New ADODB.Recordset           '临时凭证主表记录集
    
    '打开临时凭证主表,用于存放有效凭证的凭证号等信息
    If Rec_VouchMainTemp.State = 1 Then Rec_VouchMainTemp.Close
    Rec_VouchMainTemp.Open "select * from Cwzz_AccVouchMainTemp Where 1=2", Cw_DataEnvi.DataConnect, adOpenDynamic, adLockOptimistic
    With Rec_VouchMainTemp
        .AddNew
        .Fields("VouchId") = VouchIdTemp_Id              '转帐过程序号
        .Fields("Year") = Int_Year                           '取选中的年份
        .Fields("period") = Int_Period                       '取选中的会计期间
        .Fields("Ddate") = Xtrq                              '取系统日期
        .Fields("VouchClassCode") = TranVouchClass1          '所转转帐过程的凭证类别
        .Fields("Doc") = 0
        .Fields("Bill") = Xtczy
        .Fields("VouchSource") = "自动转帐"                  '凭证来源
        .Fields("OperationClass") = ""                       '业务类型
        .Fields("BillType") = ""
        .Fields("BillNo") = TranNo                           '存放转帐过程编码
        .Fields("OperationNo") = OperationNum1               '存放批号
        .Fields("DeleteFlag") = IIf(Bln_DeleteFlag, 1, 0)
        
        .Update
    End With
End Sub

Private Function Tran_Pd() As Boolean            '转帐之前的判断
    Dim jsq As Long             '临时计数器
    '提示已转过的凭证是否再转一次
    With CzxsGrid
        For jsq = .FixedRows To .Rows - 1
            If .TextMatrix(jsq, Sydz("006", GridStr(), Szzls)) = "√" Then
                If .TextMatrix(jsq, Sydz("005", GridStr(), Szzls)) <> "" Then
                    Tsxx = "第" & CzxsGrid.TextMatrix(jsq, Sydz("001", GridStr(), Szzls)) & "号已转过凭证,再转一次吗?"
                    If Xtxxts(Tsxx, 1, 4) = 7 Then
                        .TextMatrix(jsq, Sydz("006", GridStr(), Szzls)) = ""
                    End If
                End If
            End If
        Next jsq
    End With
    
    '判断选择的转帐过程共几个,保存在TranJsq中。将每个转帐过程编号赋值到TranNum()数组中,
    ReDim TranNum(1)                            '转帐过程数组附初值
    TranJsq = 0
    With CzxsGrid
        For jsq = .FixedRows To .Rows - 1
            If .TextMatrix(jsq, Sydz("006", GridStr(), Szzls)) = "√" Then
                If TranJsq = 0 Then
                    TranNum(1) = .TextMatrix(jsq, Sydz("001", GridStr(), Szzls))
                End If
                If TranJsq > 0 Then
                    ReDim Preserve TranNum(UBound(TranNum) + 1)
                    TranNum(TranJsq + 1) = .TextMatrix(jsq, Sydz("001", GridStr(), Szzls))
                End If
                TranJsq = TranJsq + 1
            End If
        Next jsq
    End With
    If TranJsq = 0 Then
        Tsxx = "没有选择转帐过程!"
        Call Xtxxts(Tsxx, 0, 4)
        Tran_Pd = False
        Exit Function
    End If
    Jsq_Eff = TranJsq               '假设选择的转帐过程全部有效
    
    '将每个转帐过程的凭证类别放到数组TranVouchClass中
    ReDim TranVouchClass(1)
    For jsq = 1 To TranJsq
        Sqlstr = "SELECT * FROM Cwzz_AutoTranMain where TranCode='" & TranNum(jsq) & "'and tranclass='" & TranClassCode & "'"
        Set Rec_AutoTranMain = Cw_DataEnvi.DataConnect.Execute(Sqlstr)
        If jsq > 1 Then
            ReDim Preserve TranVouchClass(UBound(TranVouchClass) + 1)
        End If
        TranVouchClass(jsq) = Trim(Rec_AutoTranMain.Fields("VouchClassCode") & "")
    Next jsq
    
    '取操作批号OperationNum,需唯一。
    OperationNum = CreatBillID("0102")
    RecTemp.Cl

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?