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

📄 account.bas

📁 金算盘软件代码
💻 BAS
📖 第 1 页 / 共 5 页
字号:
Attribute VB_Name = "mdlAccount"
'作者:蔡奇科白扳3
'说明:
'本模块提供三种类型的接口:

'***********************************
 '修改人:肖志华  (Oracle 版) 1998/10/09
'***********************************

'各列表窗口对应编辑权限ID(王成USE)
Option Explicit
Public Enum frmRightsID
       
    frmListPurchaseOrderID = 50                        '采购订单
    
    frmListPurchaseID_1 = 52                           '商品采购
    frmListPurchaseID_2 = 54                           '直运采购
    frmListPurchaseID_3 = 56                           '受托入库
    frmListPurchaseID_4 = 58                           '受托结算
    frmListPurchaseID_5 = 106                          '加工入库
    frmListPurchaseID_6 = 108                          '加工费用
    frmListPurchaseID_7 = 62                           '采购发票
    frmListPurchaseID_8 = 96                           '自制入库
    frmListPurchaseID_9 = 129                          '盘盈入库
    frmListPurchaseID_10 = 98                          '其他入库
    
    frmListSalesOrderID = 68                          '销售订单
    
    frmListSalesID_11 = 70                            '商品销售
    frmListSalesID_12 = 72                            '直运销售
    frmListSalesID_13 = 74                            '委托出库
    frmListSalesID_14 = 76                            '委托结算
    frmListSalesID_15 = 104                           '加工出库
    frmListSalesID_16 = 82                            '分期出库
    frmListSalesID_17 = 84                            '分期结算
    frmListSalesID_18 = 124                           '销售发票
    frmListSalesID_19 = 100                           '领用出库
    frmListSalesID_20 = 126                           '成本调整
    frmListSalesID_21 = 130                           '盘亏出库
    frmListSalesID_22 = 102                           '其他出库
    
    frmListConsigneeID = 60                           '受托调价
    frmListLendAdjustID = 80                          '代销调拨
    frmListLendAdjustPriceID = 78                     '代销调价
    
    frmListAdjustID = 88                              '商品调拨
    frmListAdjustPriceID = 90                         '商品调价
    
    frmListComposeID = 94                             '商品组装 & 商品拆卸
    
    frmListCostPriceID = 110                          '入库成本
    frmListStockTakingID = 92                         '商品盘点
    
    frmInvoiceListID = 36                             '应收业务
    frmPayableListID = 40                             '应付业务
   
    frmReceiveListID = 45                             '付款单
    frmPaymentListID = 43                             '收款单
    
    frmVoucherListID = 28                             '记帐凭证
   
    frmListTransID = 31                               '通用转帐消息
    
    doTransID = 132 '执行转帐
End Enum
Public frmR(1) As Form '销售收款,采购付款

'参数:
'strOP :“I”插入,“D”删除
'****   要实现修改功能,请先删除在新增  ****

'第1类:提供ItemActivity的ID 或 ItemActivityDeatilID 的ID 将一次全部处理本模块所涉及的2个余额(发生额)表
'Public Function ChangeAllAccount_from_Activity(strOP As String, lngActivityID As Long) As Boolean

'第2类:数据直接从数据库(ItemActivityDetail)中获得后改变余额表(或发生额表)

'Public Function ChangeAccountDaily(strOP As String, lngActivityDetailID As Integer) As Boolean

'第3类:数据不从数据库(ItemActivityDetail)中获得,数据由用户自己设置后改变余额表(或发生额表)
'(第二类接口被第一类接口从程序内部调用)

Public Function TableName(ByVal ReceiptType As Long) As String
        Select Case ReceiptType
        Case 56
            TableName = "Receive"
        Case 57
            TableName = "Polic"
        Case 58
            TableName = "Repair"
        Case 59
            TableName = "AccOpen"
        Case 60
            TableName = "AccClose"
        Case 61
            TableName = "Move"
        Case 62
            TableName = "Halt"
        Case 63
            TableName = "Enable"
        Case 64
            TableName = ""
        Case 65
            TableName = ""
        End Select
End Function
    
Public Sub ShowR_P(ByVal blnPayable As Boolean, Optional ByVal lngActivityID As Long = 0, Optional ByVal blnCancel As Boolean = False, Optional ByVal lngCustomerID As Long = 0, Optional ByVal lngItemActivityID As Long = 0)
    If blnPayable Then
        If frmR(1) Is Nothing Then
            Set frmR(1) = New frmR_P
        End If
        If lngActivityID > 0 Then
            frmR(1).ShowAOldBill 39, lngActivityID, blnCancel
        Else
            frmR(1).ShowANewTypeBill 39, lngCustomerID, lngItemActivityID
'            frmR(1).ShowANewTypeBill 39, 121, 142 ' lngCustomerID, lngItemActivityID
        End If
    Else
        If frmR(0) Is Nothing Then
            Set frmR(0) = New frmR_P
        End If
        If lngActivityID > 0 Then
            frmR(0).ShowAOldBill 40, lngActivityID, blnCancel
        Else
            frmR(0).ShowANewTypeBill 40, lngCustomerID, lngItemActivityID
        End If
    End If
End Sub
Public Function ChangeAllAccount_from_Activity(strOP As String, lngActivityID As Long) As Boolean
    Dim SqlStr As String
    Dim TmpQ As New rdoQuery
    Dim rec   As Boolean
    On Error GoTo EndProc
    
    SqlStr = "{ ? =  CALL " & gclsBase.UID & ".ChangeAllAccount_from_Activity( '" & strOP & "', " & lngActivityID & ") } "
    Set TmpQ.ActiveConnection = gclsBase.BaseDB
    TmpQ.SQL = SqlStr
    TmpQ(0).Type = rdTypeNUMERIC
    TmpQ(0).Direction = rdParamReturnValue
    TmpQ.Execute
    rec = IIf(TmpQ(0).Value = 0, True, False)
EndProc:
    Set TmpQ = Nothing
    ChangeAllAccount_from_Activity = rec
   
End Function


'改变一张凭证,自动处理Account 和 AccountBalance
Public Function ChangeAllAccount_from_Voucher(strOP As String, lngVoucherID As Long) As Boolean
    Dim SqlStr As String
    Dim TmpQ As New rdoQuery
    Dim rec   As Boolean
    On Error GoTo EndProc
    
    If gclsBase.ControlAccount Then
        SqlStr = "{ ? =   CALL " & gclsBase.UID & ".ChangeAllAccount_from_Voucher( '" & strOP & "', " & lngVoucherID & ",1) } "
    Else
        SqlStr = "{ ? =   CALL " & gclsBase.UID & ".ChangeAllAccount_from_Voucher( '" & strOP & "', " & lngVoucherID & ",0) } "
    End If
    Set TmpQ.ActiveConnection = gclsBase.BaseDB
    TmpQ.SQL = SqlStr
    TmpQ(0).Type = rdTypeNUMERIC
    TmpQ(0).Direction = rdParamReturnValue
    TmpQ.Execute
    rec = IIf(TmpQ(0).Value = 0, True, False)
EndProc:
    Set TmpQ = Nothing
    ChangeAllAccount_from_Voucher = rec

End Function
Public Function ChangeAllAccount_From_VoucherDetail(ByVal strOP As String, ByVal lngDetailID As Long) As Boolean
    Dim SqlStr As String
    Dim TmpQ As New rdoQuery
    Dim rec   As Boolean
    
    On Error GoTo EndProc
    
    If gclsBase.ControlAccount Then
        SqlStr = "{ ? =   CALL " & gclsBase.UID & ".ChangeAccount_from_VDetail( '" & strOP & "', " & lngDetailID & ",1) } "
    Else
        SqlStr = "{ ? =   CALL " & gclsBase.UID & ".ChangeAccount_from_VDetail( '" & strOP & "', " & lngDetailID & ",0) } "
    End If
    Set TmpQ.ActiveConnection = gclsBase.BaseDB
    TmpQ.SQL = SqlStr
    TmpQ(0).Type = rdTypeNUMERIC
    TmpQ(0).Direction = rdParamReturnValue
    TmpQ.Execute
    rec = IIf(TmpQ(0).Value = 0, True, False)
EndProc:
    Set TmpQ = Nothing
    ChangeAllAccount_From_VoucherDetail = rec
End Function

'改变一张应收/应付,收款/付款单,自动处理AccountDaily& AccountBanlance表
Public Function ChangeAllAccount_from_Invoice(strOP As String, lngActivityID As Long) As Boolean
    Dim SqlStr As String
    Dim TmpQ As New rdoQuery
    Dim rec   As Boolean
    On Error GoTo EndProc
    
    SqlStr = "{ ? =   CALL " & gclsBase.UID & ".ChangeAllAccount_from_Invoice( '" & strOP & "', " & lngActivityID & ") } "
    Set TmpQ.ActiveConnection = gclsBase.BaseDB
    TmpQ.SQL = SqlStr
    TmpQ(0).Type = rdTypeNUMERIC
    TmpQ(0).Direction = rdParamReturnValue
    TmpQ.Execute
    rec = IIf(TmpQ(0).Value = 0, True, False)
EndProc:
    Set TmpQ = Nothing
    ChangeAllAccount_from_Invoice = rec
End Function

''参数:
''intDirection:  1:改变AccountBalance的借方  -1:改变AccountBalance的贷方
''intFlag:       0:无凭证 1:未复核 2:已复核 3:已记帐
''dblCurrMoney    原币金额
''dblMoney As     本币金额
''dblQuantity     数量
''intYear
''lngAccountID
''lngCurrencyID
''lngJobID
''lngClassID1
''lngClassID2
''lngCustomerID
''lngDepartmentID
''lngEmployeeID
'Public Function NewAccountDaily(intDirection As Integer, intFlag As Integer, _
'                                                      strDate As String, lngAccountID As Long, lngCurrencyID As Long, _
'                                                      lngJobID As Long, lngClassID1 As Long, lngClassID2 As Long, _
'                                                      lngCustomerID As Long, lngDepartmentID As Long, _
'                                                      lngEmployeeID As Long, dblQuantity As Double, _
'                                                      dblCurrMoney As Double, dblMoney As Double) As Boolean
'        Dim SqlStr As String
'        Dim TmpQ As New rdoQuery
'        Dim rec As Boolean
'
'        SqlStr = "{ ? = CALL NewAccountDaily( " & intDirection & ", " & intFlag & ", " & dblQuantity & " , " _
'                     & dblCurrMoney & " , " & dblMoney & ", '" & strDate & "' , " & lngAccountID & " , " & lngCurrencyID & " , " _
'                     & lngJobID & " ,  " & lngClassID1 & " , " & lngClassID2 & " , " & lngCustomerID & " , " _
'                     & lngDepartmentID & " , " & lngEmployeeID & ") }"
'        Set TmpQ.ActiveConnection = gclsBase.BaseDB
'        TmpQ.sql = SqlStr
'        TmpQ(0).Type = rdTypeNUMERIC
'        TmpQ(0).Direction = rdParamReturnValue
'        TmpQ.Execute
'        rec = IIf(TmpQ(0).Value = 0, True, False)
'        Set TmpQ = Nothing
'        NewAccountDaily = rec
'End Function
'
'Public Function DeleteAccountDaily(intDirection As Integer, intFlag As Integer, strDate As String, lngAccountID As Long, lngCurrencyID As Long, lngJobID As Long, lngClassID1 As Long, lngClassID2 As Long, lngCustomerID As Long, lngDepartmentID As Long, lngEmployeeID As Long, dblQuantity As Double, dblCurrMoney As Double, dblMoney As Double) As Boolean
''On Error GoTo theErr
'    If NewAccountDaily(intDirection, intFlag, strDate, lngAccountID, lngCurrencyID, lngJobID, lngClassID1, lngClassID2, lngCustomerID, lngDepartmentID, lngEmployeeID, -1 * dblQuantity, -1 * dblCurrMoney, -1 * dblMoney) = False Then Exit Function
'    DeleteAccountDaily = True
'    Exit Function
'theErr:
'End Function
'
''                       *********************************
''                       *         AccountBalance        *
''                       *********************************
'
''当发生针对某会计科目的业务时,首先将业务发生额填入AccountDaily中,同时判断本次的发生额是否对会计科目余额表造成影响
''如果影响,则应改变会计科目余额表(accountBalance)
''注意:本次发生额仅可能影响本会计年的下面的会计年(不影响当前会计年)
''注意:发生额对会计余额的影响,可通过函数GetChangedInitValues_AccountBalance获得
'
''arrField_InitChange()arrValue_InitChange():要改变下一会计年余额的字段和对应的值
''说明:
''----------------------------------------------------------------------------------------------------------------
''以下为删除期初单专用模块
''----------------------------------------------------------------------------------------------------------------
'
''//////////////////////////////////////////////////////////////
''应收、应付、收款、付款单中对余额处理程序
''/////////////////////////////////////////////////////////////
''新增或修改本期期初余额库
'Public Function NewBalance(ByVal lngActivityID As Long, ByVal lngReceiptTypeID As Long) As Boolean
'    Dim SqlStr As String
'    Dim TmpQ As New rdoQuery
'    Dim rec   As Boolean
'

⌨️ 快捷键说明

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