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

📄 frmaccountinitdetail.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 5 页
字号:
      Width           =   700
   End
   Begin VB.Label lblAccountInitDetail 
      Caption         =   "科目(&A)"
      Height          =   255
      Index           =   0
      Left            =   120
      TabIndex        =   0
      Top             =   150
      Width           =   700
   End
End
Attribute VB_Name = "frmAccountInitDetail"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit

Private WithEvents mclsSubClassform As SubClass32.SubClass      '窗体"钩子"对象
Attribute mclsSubClassform.VB_VarHelpID = -1
Private WithEvents mclsSubClass As SubClass32.SubClass          '列表固定栏"钩子"对象
Attribute mclsSubClass.VB_VarHelpID = -1
Private mclsListSet As ListSet                                  '列表设置对象

Private mintYear As Integer, mbytPeriod As Byte                 '会计年度,会计期间
Private mlngAccountID As Long, mlngCurrencyID As Long           '科目ID,币种ID
Private mblnClose As Boolean                                    '结帐标志
Private mstrDate As String                                      '会计年度第一天
Private mstrQuantityDec As String                               '数量小数位数格式化串
Private mstrDec As String                                       '本位币小数位数格式化串
Private mstrCurrDec As String
Private mintCol As Integer, mlngRow As Long                     '录入框所在行,列
Private mblnIsInput As Boolean                                  '正在录入标志
Private mblnHscroll As Boolean, mblnVscroll As Boolean          '横向及垂直滚动条出现标志
Private mblnIsload(5) As Boolean                                '参照列表装载标志
Private mblnIsQuatity As Boolean                                '数量核算标志
Private mblnIsMultCurrency As Boolean                           '多币种核算标志
Private mblnIsAllCurrency As Boolean                            '所有币种核算标志
Private mblnIsARAP As Boolean
Private mblnIsChange As Boolean                                 '修改标志
Private mintStart As Integer
Private mblnIsArrow As Boolean
Private mlngOldAccountID As Long
Private mlngOldCurrencyID As Long
Private Const ViewId As Long = 102                              '视图ID
Private mblnAccountNoExit As Boolean
Private mblnLoad As Boolean


'显示科目期初明细
Public Sub ShowDetail(intYear As Integer, bytPeriod As Byte, strDirect As String, strDate As String, _
        strQuantityDec As String, strDec As String, lngAccountID As Long, lngCurrencyID As Long, blnClose As Boolean)
    
    Dim lngID As Long
    Dim intCount As Integer
    
    mblnLoad = False
    Me.HelpContextID = 30104
    SetHelpID 30104
    mblnIsInput = False
    For intCount = 0 To 5
        mblnIsload(intCount) = False
    Next
    Set Me.Icon = GetFormResPicture(139, vbResIcon)
    Set cmdAccountInitDetail(3).Picture = GetFormResPicture(1001, vbResBitmap)
    Set cmdAccountInitDetail(4).Picture = GetFormResPicture(1002, vbResBitmap)
    Set cmdAccountInitDetail(5).Picture = GetFormResPicture(1012, vbResBitmap)
    Set mclsListSet = New ListSet
    mclsListSet.ViewId = ViewId
    #If conVersionType = 4 Then
        lblAccountInitDetail(1).Visible = False
        lstAccountInitDetail(1).Visible = False
    #End If
    SetFlexGrid
    SetListText 10
    
    mintYear = intYear
    mbytPeriod = bytPeriod
    mstrDate = strDate
    mstrQuantityDec = strQuantityDec
    mstrDec = strDec
    mlngCurrencyID = lngCurrencyID
    
    mlngAccountID = 0
    lstAccountInitDetail(0).SeekId lngAccountID
    mlngAccountID = lngAccountID
    '初始化窗体"钩子"对象
    Set mclsSubClassform = New SubClass32.SubClass
    mclsSubClassform.hwnd = Me.hwnd
    mclsSubClassform.Messages(WM_GETMINMAXINFO) = True
    '初始化列表固定栏"钩子"对象
    Set mclsSubClass = New SubClass32.SubClass
    mclsSubClass.hwnd = msgAccountInitDetail(0).hwnd
    mclsSubClass.Messages(WM_LBUTTONDOWN) = True
    mclsSubClass.Messages(WM_LBUTTONUP) = True
    mclsSubClass.Messages(WM_PAINT) = True
    mblnLoad = True
    
    lblAccountInitDetail(3).Caption = strDirect
    mblnClose = blnClose
    If blnClose Then
        cmdAccountInitDetail(0).Enabled = False
        cmdAccountInitDetail(1).Enabled = False
        cmdAccountInitDetail(2).Enabled = False
    Else
        cmdAccountInitDetail(0).Enabled = True
        cmdAccountInitDetail(1).Enabled = True
        cmdAccountInitDetail(2).Enabled = True
    End If
    Me.Show vbModal
End Sub

'得到科目期初明细列表记录集
Private Function GetList() As rdoResultset
  Dim strSQL As String, strSelect As String, strFrom As String
  Dim strWhere As String
  
    If mblnIsInput Then
        lstAccountInitDetail(2).Visible = False
        txtAccountInitDetail.Visible = False
        mblnIsInput = False
    End If
    
    If gclsBase.FirstDate = gclsBase.BeginDate Then
        strSelect = "Select (Customer.strCustomerCode || ' ' || Max(Customer.strCustomerName)) AS 单位, (Department.strDepartmentCode || ' ' || Max(Department.strDepartmentName)) AS 部门, (Employee.strEmployeeCode || ' ' || Max(Employee.strEmployeeName)) AS 员工, ' ' AS 工程, (Class1.strClassCode || ' ' || Max(Class1.strClassName)) AS 统计, (Class2.strClassCode || ' ' || Max(Class2.strClassName)) AS 项目," & _
                 "Decode(Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit),0,'',To_Char(Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币年初," & _
                 "Decode(Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit),0,'',To_Char(Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币年初," & _
                 "Decode(Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit),0,'',To_Char(Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量年初," & _
                 "0 As 原币借方," & _
                 "0 As 本币借方,0 As 数量借方,0 As 原币贷方,0 As 本币贷方,0 As 数量贷方," & _
                 "'' AS 原币期初, '' AS 本币期初, '' AS 数量期初, Max(AccountDaily.lngCustomerID), Max(AccountDaily.lngDepartmentID), Max(AccountDaily.lngEmployeeID), 0, Max(AccountDaily.lngClassID1), Max(AccountDaily.lngClassID2), Max(AccountDaily.lngCustomerID) AS ID1, Max(AccountDaily.lngDepartmentID) AS ID2, Max(AccountDaily.lngEmployeeID) AS ID3, 0 AS ID4, Max(AccountDaily.lngClassID1) AS ID5, Max(AccountDaily.lngClassID2) AS ID6," & _
                 "Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit)," & _
                 "Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit)," & _
                 "Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit)"
    Else
        
        strSelect = "Select (Customer.strCustomerCode || ' ' || Max(Customer.strCustomerName)) AS 单位, (Department.strDepartmentCode || ' ' || Max(Department.strDepartmentName)) AS 部门, (Employee.strEmployeeCode || ' ' || Max(Employee.strEmployeeName)) AS 员工, ' ' AS 工程, (Class1.strClassCode || ' ' || Max(Class1.strClassName)) AS 统计, (Class2.strClassCode || ' ' || Max(Class2.strClassName)) AS 项目," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit,0)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit,0)),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币年初," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit,0)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit,0)),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币年初," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit,0)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit,0)),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量年初," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedDebit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedDebit)),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币借方," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedDebit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedDebit)),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币借方," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedDebit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedDebit)),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量借方," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedCredit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblCurrencyPostedCredit)),Decode(Max(Currencys.bytCurrencyDec),0,'9,999,999,999','9,999,999,990.' || String1(Max(bytCurrencyDec),'0')))) As 原币货方," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedCredit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblPostedCredit)),'9,999,999,990." & String(gclsBase.NaturalCurDec, "0") & "')) As 本币货方," & _
                 "Decode(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedCredit)),0,'',To_Char(Sum(Decode(Sign(To_Date(strDate,'yyyy-mm-dd')-To_Date('" & gclsBase.FirstDate & "','yyyy-mm-dd')),-1,0,AccountDaily.dblQuantityPostedCredit)),'" & IIf(gclsBase.QuantityDec = 0, "9,999,999,999", "9,999,999,990." & String(gclsBase.QuantityDec, "0")) & "')) As 数量货方," & _
                 "'' AS 原币期初, '' AS 本币期初, '' AS 数量期初, Max(AccountDaily.lngCustomerID), Max(AccountDaily.lngDepartmentID), Max(AccountDaily.lngEmployeeID), 0, Max(AccountDaily.lngClassID1), Max(AccountDaily.lngClassID2), Max(AccountDaily.lngCustomerID) AS ID1, Max(AccountDaily.lngDepartmentID) AS ID2, Max(AccountDaily.lngEmployeeID) AS ID3, 0 AS ID4, Max(AccountDaily.lngClassID1) AS ID5, Max(AccountDaily.lngClassID2) AS ID6," & _
                 "Sum(AccountDaily.dblCurrencyPostedDebit+AccountDaily.dblCurrencyPostedCredit)," & _
                 "Sum(AccountDaily.dblPostedDebit+AccountDaily.dblPostedCredit)," & _
                 "Sum(AccountDaily.dblQuantityPostedDebit+AccountDaily.dblQuantityPostedCredit)"
        
    End If
    
    strFrom = " From AccountDaily,Account,Currencys,Customer,Department,Employee,Class1,Class2"
    
    strWhere = " Where (((((((AccountDaily.lngAccountID=Account.lngAccountID(+))" & _
              " And AccountDaily.lngCurrencyID=Currencys.lngCurrencyID(+))" & _
              " And AccountDaily.lngCustomerID=Customer.lngCustomerID(+)) " & _
              " And AccountDaily.lngDepartmentID=Department.lngDepartmentID(+)) " & _
              " And AccountDaily.lngEmployeeID=Employee.lngEmployeeID(+)) " & _
              " And AccountDaily.lngClassID1=Class1.lngClassID(+)) " & _
              " And AccountDaily.lngClassID2=Class2.lngClassID(+))"
              
    
    strWhere = strWhere & " And AccountDaily.strDate<'" & gclsBase.BeginDate & "' And AccountDaily.lngAccountID=" & mlngAccountID & " And AccountDaily.lngCurrencyID=" & mlngCurrencyID & _
               " And Not (AccountDaily.dblPostedDebit=0 And AccountDaily.dblPostedCredit=0 And AccountDaily.dblCurrencyPostedDebit=0 And AccountDaily.dblCurrencyPostedCredit=0)" & _
               " Group BY Customer.strCustomerCode, Department.strDepartmentCode, Employee.strEmployeeCode, Class1.strClassCode, Class2.strClassCode" & _
               " ORDER BY Customer.strCustomerCode, Department.strDepartmentCode, Employee.strEmployeeCode, Class1.strClassCode, Class2.strClassCode"
    
    strSQL = strSelect & strFrom & strWhere
    Set GetList = gclsBase.BaseDB.OpenResultset(strSQL, rdOpenStatic)
End Function

'重计算期初余额
Private Sub ReCalculateInit(ByVal Row As Long, ByVal col As Integer)
    Dim dblInit(3) As Double
    Dim intCount As Integer
    Dim intCol As Integer
    
    With msgAccountInitDetail(1)
        Select Case col
            Case 6, 9, 12
                intCol = 6
            Case 7, 10, 13
                intCol = 7
            Case 8, 11, 14
                intCol = 8
        End Select
        For intCount = 0 To 2
            If .TextMatrix(Row, intCol + 3 * intCount) = "" Then
                dblInit(intCount) = 0
            Else
                dblInit(intCount) = CDbl(.TextMatrix(Row, intCol + 3 * intCount))
            End If
        Next
        '余额方向为借方
        If lblAccountInitDetail(3).Caption = "借" Then
            dblInit(3) = dblInit(0) + dblInit(1) - dblInit(2)
        Else
            dblInit(3) = dblInit(0) - dblInit(1) + dblInit(2)
        End If
        If dblInit(3) = 0 Then
            .TextMatrix(Row, intCol + 9) = ""
        Else
            Select Case intCol
                Case 6
                    .TextMatrix(Row, intCol + 9) = Format(dblInit(3), mstrCurrDec)
                Case 7
                    .TextMatrix(Row, intCol + 9) = Format(dblInit(3), mstrDec)
                Case 8
                    .TextMatrix(Row, intCol + 9) = Format(dblInit(3), mstrQuantityDec)
            End Select
        End If
    End With
End Sub

'处理回车键
Private Sub ReturnProc()
    Dim intCount As Integer
    
    If InputFinish() Then
        With msgAccountInitDetail(1)
            For intCount = mintCol + 1 To 14
                If .ColWidth(intCount) > 0 Then Exit For
            Next
            If intCount <= 14 Then
                .col = intCount
                .Row = mlngRow
                InputStart .Row, .col
                mblnIsArrow = True
            Else
                If mlngRow < .Rows - 1 Then
                    .Row = mlngRow + 1
                    For intCount = 0 To 14
                        If .ColWidth(intCount) > 0 Then
                            .col = intCount
                            Exit For
                        End If
                    Next
                    If .Row - 8 > 0 Then
                      .TopRow = .Row - 8
                    End If
                    InputStart .Row, .col
                    mblnIsArrow = True
                Else
                    mclsMainControl_ListEditMenu 0
                End If
            End If
        End With
    End If
End Sub

'保存期初余额
Private Function SaveInit(Optional blnFlag As Boolean = False) As Boolean
    Dim intCount As Integer, intCnt As Integer
    Dim lngResult As Long
    
    With msgAccountInitDetail(1)
        If blnFlag Then
            If Not InputFinish() Then
                SaveInit = False
                Exit Function
            End If
        End If
        For intCount = 2 To .Rows - 1
            If .RowData(intCount) And &H1C Then Exit For
        Next
        If intCount <= .Rows - 1 Then
            If Not blnFlag Then
                lngResult = ShowMsg(Me.hwnd, "是否保存所做修改?", vbQuestion + vbYesNo, Me.Caption)
                If lngResult = vbNo Then
                    mblnIsChange = False
                    .Rows = 2
                    SaveInit = True
                    Exit Function
                End If
            End If
            If InputFinish() Then
                If .Rows - 1 >= 2 Then
                    gclsBase.BaseWorkSpace.BeginTrans

⌨️ 快捷键说明

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