⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄

📁 VB开发的ERP系统
💻
📖 第 1 页 / 共 5 页
字号:
                If Rec_AutoTranItem.Fields("tranori") <> DestTranOri Then
                    Dhj = Dhj + Je * IIf(Rec_AutoTranItem.Fields("tranori") = DestTranOri, -1, 1)
                End If
                
                '写临时凭证辅表
                If Je <> 0 Then
                    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")))
                End If
            End If
            Rec_AutoTranItem.MoveNext
            i = i + 1
            hjje = hjje + Je
        Loop
        
        '对方汇总
        SqlStr = "Select ccode,TranOri,FormulaString from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaString like '%对方汇总数%' Order by AutoTranId"
        Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        If Rec_AutoTranItem.EOF = False Then
            DestTranOri = Rec_AutoTranItem.Fields("tranori")
        End If
        
        '找到数据来源为对方汇总数的转帐关系
        SqlStr = "select * from Cwzz_AutoTranItem where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and FormulaString like '%对方汇总数%' ORDER BY AutoTranId"
        Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        Do While Rec_AutoTranItem.EOF = False
            
            Str_Formula = Trim(Rec_AutoTranItem.Fields("FormulaString"))
            Str_Formula = Replace(Str_Formula, "对方汇总数", Str(Dhj))
            
            SqlStr = "select " & Str_Formula & " as ReturnValue"
            Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
            If RecTemp.EOF = False Then
                Je = RecTemp.Fields("ReturnValue")
            End If
            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
            i = i + 1
        Loop
        
        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.Lab_OperNum.Caption = OperationNum
        
        '调入凭证制作窗体
        AutoTran_PzFrm.Show 1
        
        
        '为在转帐过程列表的网格中重新显示制单日期和操作员,防止虽转完,但无痕迹
        Call Write_Date
        Call Clean
    End If
    Call Cxnrtcwg
    Exit Sub
Err1:
    Cw_DataEnvi.DataConnect.RollbackTrans
    'Tsxx = "转帐过程中出现未知错误,程序自动恢复保存前状态!"
    Tsxx = Err.Description
    Call Xtxxts(Tsxx, 0, 1)
    Exit Sub
    
End Sub

Private Sub Run3()                                          '执行汇兑损益程序
    
    Dim Tj_Main As String                                   '总帐取数公式
    Dim Tj_List As String                                   '明细帐取数公式
    Dim Tj_Ass As String                                    '辅助帐取数公式
    
    Dim jsq As Integer                                      '临时计数器
    Dim i As Integer
    Dim Str_Formula As String                               '公式串
    Dim DestTranOri As String                               '对方汇总数的借贷方向
    Dim Str_ForeignCode As String                           '外币编码
    Dim Dec_AdjustRate As Double                            '汇率
    Dim lng_OperationNum As Long
    Bln_DeleteFlag = True
    
    If Tran_Pd = False Then
        Exit Sub
    End If
    
    On Error GoTo Err1
    Cw_DataEnvi.DataConnect.BeginTrans
    
    TranCount = TranJsq          '记录生成凭证的个数
    VoidStr = ""         '记录没有数值的空凭证序号
    
    '对转帐列表网格内选中的TranJsq个转帐过程依次生成凭证,写到临时凭证数据表中
    For jsq = 1 To TranJsq
        
        '写临时凭证主表
        
        lng_OperationNum = CreatBillID("0102")
        Call Save_TempPz_Main(TranVouchClass(jsq), TranNum(jsq), OperationNum, lng_OperationNum)
        
        '对方汇总数的借贷方向
        SqlStr = "Select ccode,TranOri from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=0 Order by AutoTranId"
        Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        If Rec_AutoTranItem.EOF = False Then
            DestTranOri = Rec_AutoTranItem.Fields("tranori")
        End If
        
        Jhj = 0
        Dhj = 0   '对方汇总金额
        Jhjsl = 0
        Dhjsl = 0
        JhjItemSl = 0
        DhjItemSl = 0
        i = 0
        hjje = 0      '合计金额
        '按转帐定义关系,取每笔转帐数据,写入临时数据辅表中
        SqlStr = "select * from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=1 ORDER BY AutoTranId"
        Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        Do While Rec_AutoTranItem.EOF = False
            
            Str_Formula = Trim(Rec_AutoTranItem.Fields("ccode"))
            Str_ForeignCode = Trim(Rec_AutoTranItem.Fields("ForeigncurrCode"))
            
            If RecTemp.State = 1 Then RecTemp.Close
            SqlStr = "select AdjustRate from Gy_ForeignCurrency where ForeignCurrCode='" & Str_ForeignCode & "'"
            Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
            If RecTemp.EOF = False Then
                Dec_AdjustRate = RecTemp.Fields("AdjustRate")
            End If
            
            If RecTemp.State = 1 Then RecTemp.Close
            SqlStr = "select ccode,qmye,qmwb from Cwzz_AccSum where ccode='" & Str_Formula & "' and year=" & Xtyear & " and period=" & Xtmm
            Set RecTemp = Cw_DataEnvi.DataConnect.Execute(SqlStr)
            If RecTemp.EOF = False Then
                Je = RecTemp.Fields("qmwb") * Dec_AdjustRate - RecTemp.Fields("qmye")
                Je = Je * IIf(Rec_AutoTranItem.Fields("tranori") = Rec_AutoTranItem.Fields("BalanceOri"), 1, -1)
                Dhj = Dhj + Je * IIf(Rec_AutoTranItem.Fields("tranori") = DestTranOri, -1, 1)
                
                '写临时凭证辅表
                If Je <> 0 Then
                    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")))
                End If
            End If
            Rec_AutoTranItem.MoveNext
            i = i + 1
            hjje = hjje + Je
        Loop
        
        '对方汇总
        SqlStr = "Select ccode,TranOri from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=0 Order by AutoTranId"
        Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        If Rec_AutoTranItem.EOF = False Then
            DestTranOri = Rec_AutoTranItem.Fields("tranori")
        End If
        
        '找到数据来源为对方汇总数的转帐关系
        SqlStr = "select * from Cwzz_V_AutoItemAccCode where Trancode='" & TranNum(jsq) & "' and TranClass='" & TranClassCode & "' and ForeignFlag=0 ORDER BY AutoTranId"
        Set Rec_AutoTranItem = Cw_DataEnvi.DataConnect.Execute(SqlStr)
        Do While Rec_AutoTranItem.EOF = False
            
            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.Lab_OperNum.Caption = OperationNum
        
        '调入凭证制作窗体
        AutoTran_PzFrm.Show 1
        
        
        '为在转帐过程列表的网格中重新显示制单日期和操作员,防止虽转完,但无痕迹
        Call Write_Date
        Call Clean
    End If
    Call Cxnrtcwg
    Exit Sub
    
Err1:
    Cw_DataEnvi.DataConnect.RollbackTrans
    'Tsxx = "转帐过程中出现未知错误,程序自动恢复保存前状态!"
    Tsxx = Err.Description
    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 Re

⌨️ 快捷键说明

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