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

📄 frmexpense.frm

📁 金算盘软件代码
💻 FRM
📖 第 1 页 / 共 5 页
字号:
    End If
    
End Function

' 向导每步初始设置
Private Sub InitStep(TabIndex As Integer)
    Dim lngCnt As Long
    Me.MousePointer = vbHourglass
    
    Select Case TabIndex
    Case 0: InitAccount1       '管理费用
    Case 1: InitAccount2       '费用分配
    Case 2
        For lngCnt = 0 To TabIndex - 1
            If Not mblnValid(lngCnt) Then
                stabWizard.Tab = lngCnt
            End If
        Next lngCnt
        InitResult        '凭证预演
    End Select
    RefreshCmd
    Me.MousePointer = vbDefault
End Sub

' 向导完成后需执行的操作
Private Sub Execute()
    Dim lngCnt As Long, lngCntDetail As Long
    Dim errNo As Long
    Dim strMsg As String
    
    On Error GoTo ErrHandle
    
    If Not SaveVoucher(VoucherData) Then
        If VoucherData(0).ErrorString <> "" Then
            ShowMsg hwnd, "凭证生成失败:" & VoucherData(0).ErrorString, vbOKOnly + vbCritical, Caption
        Else
            ShowMsg hwnd, "没有凭证生成!", vbOKOnly + vbCritical, Caption
        End If
    Else
        lngCntDetail = 0
        For lngCnt = 0 To UBound(VoucherData)
            If VoucherData(lngCnt).Used Then
                If Not VoucherData(lngCnt).IsError Then
                    lngCntDetail = lngCntDetail + 1
                Else
                    strMsg = strMsg & Chr(13) & "第" & lngCnt & "张凭证" & VoucherData(lngCnt).ErrorString
                End If
            End If
        Next lngCnt
        If strMsg <> "" Then
            ShowMsg hwnd, "生成了" & lngCntDetail & "张凭证,其中:" & strMsg, vbOKOnly + vbExclamation, Caption
        End If
        gclsSys.SendMessage Me.hwnd, msgReceipt41
        For lngCnt = 0 To UBound(VoucherData)
            If VoucherData(lngCnt).Saved Then
                Me.Hide
                BillPublic.ShowBill 50, VoucherData(lngCnt).VoucherID
                Exit For
            End If
        Next lngCnt
    End If
    Exit Sub
    
ErrHandle:
    errNo = Errors.ErrorsDeal(True, Me)
    Select Case errNo
    Case edtResume: Resume
    Case edtResumeNext: Resume Next
    Case edtCanNotKnown
        ShowMsg hwnd, "程序出错:" & Err.Description, vbOKOnly + vbCritical, Caption
    End Select
End Sub

Private Sub cmdStep_Click(Index As Integer)
    Dim blnUnload As Boolean
    Dim strMsg As String
    
    blnUnload = False
    
    Select Case Index
    Case 0  '取消
        blnUnload = True
    Case 1  '上一步
        If stabWizard.Tab > 0 Then
            stabWizard.Tab = stabWizard.Tab - 1
        End If
    Case 2  '下一步
        If stabWizard.Tab < mintStepNum Then
            stabWizard.Tab = stabWizard.Tab + 1
        End If
    Case 3: '完成
        If ValidStep(mintStepNum) Then
            cmdStep(3).Enabled = False
            Execute
            blnUnload = True
        End If
    End Select
    
    If blnUnload Then
       Unload Me
    End If
End Sub

'重设按扭显示属性
Private Sub RefreshCmd()
    Dim lngCnt As Long
    
    Select Case stabWizard.Tab
    Case 0
        cmdStep(1).Enabled = False
        cmdStep(2).Enabled = True
    Case mintStepNum
        cmdStep(1).Enabled = True
        cmdStep(2).Enabled = False
    Case Else
        cmdStep(1).Enabled = True
        cmdStep(2).Enabled = True
    End Select
    
    '是否每步都合法
    For lngCnt = 0 To mintStepNum
        If Not mblnValid(lngCnt) Then
            Exit For
        End If
    Next lngCnt
    cmdStep(3).Enabled = (lngCnt > mintStepNum)
    
    '若是最后一步,把完成按扭变为有效
    If Not cmdStep(3).Enabled Then
        If stabWizard.Tab = mintStepNum Then
            cmdStep(3).Enabled = True
        End If
    End If

    If stabWizard.Tab = stabWizard.Tabs - 1 Then
        On Error Resume Next
        cmdStep(3).SetFocus
    Else
        On Error Resume Next
        cmdStep(2).SetFocus
    End If
End Sub


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'  向导步骤初始化
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'第一步:结余转入
Private Function InitAccount1()
    If fraWizard(0).Tag <> "已设置" Then
        fraWizard(0).Tag = "已设置"
        '结余转入
        RefreshAccount 1
        ltxtAcc1.SeekId GetSet(1, "管理费用分摊", "管理费用科目", 0)
    End If
End Function

'第二步:凭证选项初始
Private Function InitAccount2()
    RefreshAccount 21
    ltxtAcc20.SeekId GetSet(1, "管理费用分摊", "医疗支出科目", 0)
    spinRate0.Text = Format(GetSet(1, "管理费用分摊", "医疗支出比例", 0#), "0.00")
    RefreshAccount 22
    ltxtAcc21.SeekId GetSet(1, "管理费用分摊", "药品支出科目", 0)
    spinRate1.Text = Format(GetSet(1, "管理费用分摊", "药品支出比例", 0#), "0.00")
    RefreshAccount 23
    ltxtAcc22.SeekId GetSet(1, "管理费用分摊", "制剂生产科目", 0)
    spinRate2.Text = Format(GetSet(1, "管理费用分摊", "制剂生产比例", 0#), "0.00")
End Function

'第三步:凭证预缆初始
Private Function InitResult()
    Dim lngCnt As Long, lngCntDetail As Long, lngCntOrder As Long
    Dim strResult As String, strDetail As String, strAmount As String
    Dim strSql As String
    Dim recAccount As rdoResultset
    Dim lngLen As Long, lngSpace As Long
    
    If fraWizard(2).Tag <> "已设置" Then
        
        fraWizard(2).Tag = "已设置"
        
        '凭证模板参照
        RefreshTemplate
        lngCnt = CLng(GetSet(1, "管理费用分摊", "凭证摸板", 0))
        If lngCnt > 0 Then
            ltxtTemplate.SeekId lngCnt
        End If
        
        '凭证类型参照
        RefreshVoucherType
        lngCnt = CLng(GetSet(1, "管理费用分摊", "凭证类型", 0))
        If lngCnt > 0 Then
            ltxtType.SeekId lngCnt
        End If
        
        If Not GenVoucher Then
            txtResult.Text = ""
            Exit Function
        End If
        
        If UBound(VoucherData) < 100 And UBound(VoucherData(0).Detail) < 100 Then
            strResult = ""
            lngLen = 58
            For lngCnt = 0 To UBound(VoucherData)
                With VoucherData(lngCnt)
                    If .Used Then
                        For lngCntOrder = 0 To UBound(.Detail)
                            lngCntDetail = lngCntOrder
                            If .Detail(lngCntDetail).Amount <> 0 Then
                                If .Detail(lngCntDetail).Direction = adDebit Then
                                    strDetail = "借:"
                                Else
                                    strDetail = "贷:"
                                End If
                                strSql = "SELECT strAccountCode,strAccountName FROM Account " _
                                    & "WHERE lngAccountID=" & .Detail(lngCntDetail).AccountID
                                'Set recAccount = gclsBase.BaseDB.OpenRecordset(strSql, dbOpenSnapshot)
                                Set recAccount = gclsBase.BaseDB.OpenResultset(strSql, rdOpenStatic)
                                If Not recAccount.EOF Then
                                    strDetail = strDetail & recAccount!strAccountCode & " " _
                                        & Trim(recAccount!strAccountName)
                                    If .Detail(lngCntDetail).CustomerID > 0 Then
                                        strResult = strResult & strDetail & Chr(13) & Chr(10)
                                        strDetail = Space(4) & "— " & CustomerName(.Detail(lngCntDetail).CustomerID)
                                    End If
                                    If .Detail(lngCntDetail).DepartmentID > 0 Then
                                        strResult = strResult & strDetail & Chr(13) & Chr(10)
                                        strDetail = Space(4) & "— " & DepartmentName(.Detail(lngCntDetail).DepartmentID)
                                    End If
                                    If .Detail(lngCntDetail).EmployeeID > 0 Then
                                        strResult = strResult & strDetail & Chr(13) & Chr(10)
                                        strDetail = Space(4) & "— " & EmployeeName(.Detail(lngCntDetail).EmployeeID)
                                    End If
        '                            If .Detail(lngCntDetail).JobID > 0 Then
        '                                strDetail = strDetail & "/" & JobName(.Detail(lngCntDetail).JobID)
        '                            End If
                                    If .Detail(lngCntDetail).ClassID1 > 0 Then
                                        strResult = strResult & strDetail & Chr(13) & Chr(10)
                                        strDetail = Space(4) & "— " & Class1Name(.Detail(lngCntDetail).ClassID1)
                                    End If
                                    If .Detail(lngCntDetail).ClassID2 > 0 Then
                                        strResult = strResult & strDetail & Chr(13) & Chr(10)
                                        strDetail = Space(4) & "— " & Class2Name(.Detail(lngCntDetail).ClassID2)
                                    End If
                                End If
                                lngSpace = lngLen - StrLen(strDetail) - 14
                                If lngSpace < 0 Then lngSpace = 0
                                strDetail = strDetail & Space(lngSpace)
                                strAmount = Format(.Detail(lngCntDetail).Amount, "#0.00")
                                lngSpace = 14 - StrLen(strAmount)
                                If lngSpace < 0 Then lngSpace = 0
                                strDetail = strDetail & Space(lngSpace) & strAmount
                                strResult = strResult & strDetail & Chr(13) & Chr(10)
                            End If
                        Next lngCntOrder
                        strResult = strResult & String(lngLen / 2, "─") & Chr(13) & Chr(10)
                    End If
                End With
            Next lngCnt
        Else
            If UBound(VoucherData) > 0 Then
                strResult = "共有" & UBound(VoucherData) + 1 & "张凭证"
            Else
                strResult = "凭证共有" & UBound(VoucherData(0).Detail) + 1 & "笔分录"
            End If
        End If
        txtResult.Text = strResult
    End If
End Function


''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'
'  向导步骤合法检查
'
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'第一步,损益科目
Private Function ValidAccount1(Msg As String) As Boolean
    ValidAccount1 = True
    If ltxtAcc1.ID = 0 Then
        ValidAccount1 = False
        Msg = "请指定管理费用科目!"
    Else
        SaveSet 1, "管理费用分摊", "管理费用科目", ltxtAcc1.ID, True, "Long"
    End If
    fraWizard(2).Tag = ""
End Function

'第二步,结余分配
Private Function ValidAccount2(Msg As String) As Boolean
    Dim strSql As String
    Dim recAccount As rdoResultset
    
    mblnAcc22IsDetail = False
    
    ValidAccount2 = True
    If ValidAccount2 Then
        If ltxtAcc20.ID = 0 Then
            ValidAccount2 = False
            Msg = "输入医疗支出科目!"
        End If
    End If
    If ValidAccount2 Then
        If C2Dbl(spinRate0.Text) < 0 Then
            ValidAccount2 = False
            Msg = "医疗支出科目分摊比例不能小于0!"
        End If
        If C2Dbl(spinRate0.Text) > 100 Then
            ValidAccount2 = False
            Msg = "医疗支出科目分摊比例不能大于100!"
        End If
    End If
    If ValidAccount2 Then
        If ltxtAcc21.ID = 0 Then
            ValidAccount2 = False
            Msg = "输入药品支出科目!"
        End If
    End If
    If ValidAccount2 Then

⌨️ 快捷键说明

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