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

📄 transferpubic.bas

📁 金算盘软件代码
💻 BAS
📖 第 1 页 / 共 5 页
字号:
    Dim lngCountSour As Long
    
    If UBound(VoucherData) >= lngSourCnt And UBound(VoucherData) >= lngDestCnt Then
        VoucherData(lngDestCnt).Used = VoucherData(lngSourCnt).Used
        VoucherData(lngDestCnt).VoucherID = VoucherData(lngSourCnt).VoucherID
        VoucherData(lngDestCnt).VoucherDate = VoucherData(lngSourCnt).VoucherDate
        VoucherData(lngDestCnt).TemplateID = VoucherData(lngSourCnt).TemplateID
        VoucherData(lngDestCnt).Number = VoucherData(lngSourCnt).Number
        VoucherData(lngDestCnt).VoucherTypeID = VoucherData(lngSourCnt).VoucherTypeID
        VoucherData(lngDestCnt).VoucherNO = VoucherData(lngSourCnt).VoucherNO
        VoucherData(lngDestCnt).OperatorID = VoucherData(lngSourCnt).OperatorID
        VoucherData(lngDestCnt).CheckerID = VoucherData(lngSourCnt).CheckerID
        VoucherData(lngDestCnt).PostID = VoucherData(lngSourCnt).PostID
        VoucherData(lngDestCnt).VoucherSourceID = VoucherData(lngSourCnt).VoucherSourceID
        VoucherData(lngDestCnt).SourceVoucherID = VoucherData(lngSourCnt).SourceVoucherID
        VoucherData(lngDestCnt).IsPrint = VoucherData(lngSourCnt).IsPrint
        VoucherData(lngDestCnt).IsVoid = VoucherData(lngSourCnt).IsVoid
        VoucherData(lngDestCnt).IsCancel = VoucherData(lngSourCnt).IsCancel
        VoucherData(lngDestCnt).IsError = VoucherData(lngSourCnt).IsError
        If VoucherData(lngSourCnt).Used Then
            lngCountSour = UBound(VoucherData(lngSourCnt).Detail)
            ReDim Preserve VoucherData(lngDestCnt).Detail(lngCountSour)
            For lngCnt = 0 To lngCountSour
                VoucherData(lngDestCnt).Detail(lngCnt).AccountID = VoucherData(lngSourCnt).Detail(lngCnt).AccountID
                VoucherData(lngDestCnt).Detail(lngCnt).Amount = VoucherData(lngSourCnt).Detail(lngCnt).Amount
                VoucherData(lngDestCnt).Detail(lngCnt).Attribute = VoucherData(lngSourCnt).Detail(lngCnt).Attribute
                VoucherData(lngDestCnt).Detail(lngCnt).ClassID1 = VoucherData(lngSourCnt).Detail(lngCnt).ClassID1
                VoucherData(lngDestCnt).Detail(lngCnt).ClassID2 = VoucherData(lngSourCnt).Detail(lngCnt).ClassID2
                VoucherData(lngDestCnt).Detail(lngCnt).CurrencyAmount = VoucherData(lngSourCnt).Detail(lngCnt).CurrencyAmount
                VoucherData(lngDestCnt).Detail(lngCnt).CurrencyID = VoucherData(lngSourCnt).Detail(lngCnt).CurrencyID
                VoucherData(lngDestCnt).Detail(lngCnt).CustomerID = VoucherData(lngSourCnt).Detail(lngCnt).CustomerID
                VoucherData(lngDestCnt).Detail(lngCnt).DepartmentID = VoucherData(lngSourCnt).Detail(lngCnt).DepartmentID
                VoucherData(lngDestCnt).Detail(lngCnt).DetailEntry = VoucherData(lngSourCnt).Detail(lngCnt).DetailEntry
                VoucherData(lngDestCnt).Detail(lngCnt).Direction = VoucherData(lngSourCnt).Detail(lngCnt).Direction
                VoucherData(lngDestCnt).Detail(lngCnt).EmployeeID = VoucherData(lngSourCnt).Detail(lngCnt).EmployeeID
'                VoucherData(lngDestCnt).Detail(lngCnt).JobID = VoucherData(lngSourCnt).Detail(lngCnt).JobID
                VoucherData(lngDestCnt).Detail(lngCnt).Price = VoucherData(lngSourCnt).Detail(lngCnt).Price
                VoucherData(lngDestCnt).Detail(lngCnt).Quantity = VoucherData(lngSourCnt).Detail(lngCnt).Quantity
                VoucherData(lngDestCnt).Detail(lngCnt).Rate = VoucherData(lngSourCnt).Detail(lngCnt).Rate
                VoucherData(lngDestCnt).Detail(lngCnt).Remark = VoucherData(lngSourCnt).Detail(lngCnt).Remark
            Next lngCnt
        End If
    End If
End Sub

'清除凭证模板数据
Public Sub InitVoucherRecord(VoucherData() As VoucherRecord)
    ReDim VoucherData(0)
    ReDim VoucherData(0).Detail(0)
    With VoucherData(0)
        .Used = False
        .Saved = False
        .VoucherID = 0
        .VoucherDate = ""
        .ErrorString = ""
        .TemplateID = 0
        .Number = 0
        .VoucherTypeID = 0
        .VoucherNO = 0
        .OperatorID = 0
        .CheckerID = 0
        .PostID = 0
        .VoucherSourceID = 0
        .SourceVoucherID = 0
        .IsPrint = False
        .IsVoid = False
        .IsCancel = False
        .IsError = False
        .Detail(0).Remark = " "
        .Detail(0).AccountID = 0
        .Detail(0).Direction = 0
        .Detail(0).Amount = 0
        .Detail(0).CurrencyID = 0
        .Detail(0).CurrencyAmount = 0
        .Detail(0).Rate = 0
        .Detail(0).Quantity = 0
        .Detail(0).Price = 0
        .Detail(0).ClassID1 = 0
        .Detail(0).ClassID2 = 0
        .Detail(0).JobID = 0
        .Detail(0).CustomerID = 0
        .Detail(0).DepartmentID = 0
        .Detail(0).EmployeeID = 0
    End With
End Sub

Public Sub InitVoucher(VoucherData As VoucherRecord)
    ReDim VoucherData.Detail(0)
    With VoucherData
        .Used = False
        .Saved = False
        .VoucherID = 0
        .VoucherDate = ""
        .ErrorString = ""
        .TemplateID = 0
        .Number = 0
        .VoucherTypeID = 0
        .VoucherNO = 0
        .OperatorID = 0
        .CheckerID = 0
        .PostID = 0
        .VoucherSourceID = 0
        .SourceVoucherID = 0
        .IsPrint = False
        .IsVoid = False
        .IsCancel = False
        .IsError = False
        .Detail(0).Remark = ""
        .Detail(0).AccountID = 0
        .Detail(0).Direction = 0
        .Detail(0).Amount = 0
        .Detail(0).CurrencyID = 0
        .Detail(0).CurrencyAmount = 0
        .Detail(0).Rate = 0
        .Detail(0).Quantity = 0
        .Detail(0).Price = 0
        .Detail(0).ClassID1 = 0
        .Detail(0).ClassID2 = 0
        .Detail(0).JobID = 0
        .Detail(0).CustomerID = 0
        .Detail(0).DepartmentID = 0
        .Detail(0).EmployeeID = 0
    End With
End Sub

'在结构数据中新增一张凭证
Public Sub NewVoucherPage(VoucherData() As VoucherRecord, intCntVoucher As Integer, intDetailNum As Integer)
    Dim lngCnt As Long
    
    intCntVoucher = UBound(VoucherData)
    If VoucherData(intCntVoucher).Used Then
        intCntVoucher = intCntVoucher + 1
        ReDim Preserve VoucherData(intCntVoucher)
        ReDim VoucherData(intCntVoucher).Detail(0)
    End If
    
    With VoucherData(intCntVoucher)
        .Used = False
        .VoucherID = 0
        .VoucherDate = ""
        .TemplateID = 0
        .Number = 0
        .VoucherTypeID = 0
        .VoucherNO = 0
        .OperatorID = 0
        .CheckerID = 0
        .PostID = 0
        .VoucherSourceID = 0
        .SourceVoucherID = 0
        .IsPrint = True
        .IsVoid = False
        .IsCancel = False
        .IsError = False
        For lngCnt = 0 To intDetailNum
            .Detail(lngCnt).Remark = ""
            .Detail(lngCnt).AccountID = 0
            .Detail(lngCnt).Direction = 0
            .Detail(lngCnt).Amount = 0
            .Detail(lngCnt).CurrencyID = 0
            .Detail(lngCnt).CurrencyAmount = 0
            .Detail(lngCnt).Rate = 0
            .Detail(lngCnt).Quantity = 0
            .Detail(lngCnt).Price = 0
            .Detail(lngCnt).ClassID1 = 0
            .Detail(lngCnt).ClassID2 = 0
            .Detail(lngCnt).JobID = 0
            .Detail(lngCnt).CustomerID = 0
            .Detail(lngCnt).DepartmentID = 0
            .Detail(lngCnt).EmployeeID = 0
        Next lngCnt
    End With
End Sub

'取科目所有属性
'入口:科目ID
'返回:科目性质(枚举型)
'      科目类型(枚举型)
'      科目属性(枚举型)
Public Function AccountAttribute(AccountID As Long, Optional AccountCode As String, _
    Optional AccountNature As enumAccountNature, Optional AccountType As enumAccountType) As enumAccountAttribute
    
    Dim errNo As Long
    Dim strSql As String
    Dim recTmp As rdoResultset
    
    On Error GoTo ErrHandle
    
    strSql = "SELECT * FROM Account WHERE lngAccountID=" & AccountID
    Set recTmp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If Not recTmp.EOF Then
        With recTmp
            AccountAttribute = AccountAttribute + IIf(!blnIsDetail = 1, aaDetail, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsInActive = 1, 0, aaActive)
            AccountAttribute = AccountAttribute + IIf(!intDirection = 1, aaDirection, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsCustomer = 1, aaCustomer, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsDepartment = 1, aaDepartment, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsEmployee = 1, aaEmployee, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsClass1 = 1, aaClass1, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsClass2 = 1, aaClass2, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsQuantity = 1, aaQuantity, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsMultCurrency = 1, aaMultCurrency, 0)
            AccountAttribute = AccountAttribute + IIf(!blnIsAllCurrency = 1, aaAllCurrency, 0)
            AccountCode = !strAccountCode
            AccountType = !lngAccountTypeID
            AccountNature = !lngAccountNatureID
            AccountID = !lngAccountID
        End With
    End If
    recTmp.Close
    Set recTmp = Nothing
    Exit Function
    
ErrHandle:
    errNo = Errors.ErrorsDeal()
    Select Case errNo
    Case edtResume: Resume
    Case edtResumeNext: Resume Next
    Case edtCanNotKnown
        ShowMsg 0, "程序出错:" & Err.Description, vbOKOnly + vbCritical, "打开科目表"
    End Select
    If Not recTmp Is Nothing Then Set recTmp = Nothing
End Function

'根据凭证ID设置凭证对方科目
Private Sub SetDebitCreditAccount(lngVoucherID As Long)
    Dim strDebitAccount As String
    Dim strCreditAccount As String
    Dim strSql As String
    Dim recVoucher As rdoResultset
    Dim recDetail As rdoResultset
    Dim errNo As Long
    
    On Error GoTo ErrHandle
    
    strSql = "SELECT * FROM Voucher WHERE lngVoucherID=" & lngVoucherID
    Set recVoucher = gclsBase.BaseDB.OpenResultset(strSql, rdOpenDynamic, rdConcurRowVer, 64)
    If Not recVoucher.EOF Then
        strSql = "SELECT * FROM VoucherDetail WHERE lngVoucherID=" & lngVoucherID
        Set recDetail = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
        Do While Not recDetail.EOF
            If recDetail!intDirection = adDebit Then
                strDebitAccount = strDebitAccount & AccountCode(recDetail!lngAccountID) & " "
            Else
                strCreditAccount = strCreditAccount & AccountCode(recDetail!lngAccountID) & " "
            End If
            recDetail.MoveNext
        Loop
        recDetail.Close
        Set recDetail = Nothing
        recVoucher.Edit
        recVoucher!strDebitAccountCode = strDebitAccount
        recVoucher!strCreditAccountCode = strCreditAccount
        recVoucher.Update
    End If
    recVoucher.Close
    Set recVoucher = Nothing
    Exit Sub
    
ErrHandle:
    errNo = Errors.ErrorsDeal()
    Select Case errNo
    Case edtResume: Resume
    Case edtResumeNext: Resume Next
    Case edtCanNotKnown
        ShowMsg 0, "程序出错:" & Err.Description, vbOKOnly + vbCritical, "打开凭证库"
    End Select
    If Not recDetail Is Nothing Then Set recDetail = Nothing
    If Not recVoucher Is Nothing Then Set recVoucher = Nothing
End Sub

'取科目代码
Public Function AccountCode(lngAccountID As Long, Optional blnName As Boolean) As String

    Dim errNo As Long
    Dim strSql As String
    Dim recTmp As rdoResultset
    
    On Error GoTo ErrHandle
    
    strSql = "SELECT strAccountCode,strAccountName FROM Account WHERE lngAccountID=" & lngAccountID
    Set recTmp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If Not recTmp.EOF Then
        AccountCode = Trim$(recTmp!strAccountCode)
        If blnName Then
            AccountCode = AccountCode & " " & Trim$(recTmp!strAccountName)
        End If
    End If
    recTmp.Close
    Set recTmp = Nothing
    Exit Function
    
ErrHandle:
    errNo = Errors.ErrorsDeal()
    Select Case errNo
    Case edtResume: Resume
    Case edtResumeNext: Resume Next
    Case edtCanNotKnown
        ShowMsg 0, "程序出错:" & Err.Description, vbOKOnly + vbCritical, "打开科目表"
    End Select
    If Not recTmp Is Nothing Then Set recTmp = Nothing
End Function

'取科目代码
Public Function AccountCodeID(strCode As String) As Long

    Dim errNo As Long
    Dim strSql As String
    Dim recTmp As rdoResultset
    
    On Error GoTo ErrHandle
    
    strSql = "SELECT * FROM Account WHERE strAccountCode='" & strCode & "'"
    Set recTmp = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
    If Not recTmp.EOF Then
        AccountCodeID = Trim$(recTmp!lngAccountID)
    End If
    recTmp.Close
    Set recTmp = Nothing

⌨️ 快捷键说明

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