List 6-176 Business.BillコンポーネントのMakeOneBillメソッド
  1: Public Function MakeOneBill(ByVal SlipID As Long) As Long
  2:     ' 指定された伝票から請求書を作成する
  3:     ' 【引数】
  4:     '   SlipID = 請求書を作成したい伝票の伝票番号
  5:     ' 【戻り値】
  6:     '   作成された請求書の請求書番号
  7:     Dim objContext As ObjectContext
  8:     Dim objDataBill As DataObj.Bill
  9:     Dim objDataSlip As DataObj.Slip
 10:     Dim BillID As Variant, BillDate As Variant, ONEBILLFLAG As Variant
 11:     Dim CustomerID As Variant, SUBTOTAL As Variant, TAX As Variant
 12:     Dim TOTAL As Variant
 13:     Dim MADEDATE As Variant, MADEUSER As Variant
 14:     Dim LASTDATE As Variant, LASTUSER As Variant
 15:     Dim ACCOUNTINGUSER As Variant, ACCOUNTINGDATE As Variant
 16:     Dim ACCOUNTINGCOMMENT As Variant
 17:     ' オブジェクトコンテキストの取得
 18:     Set objContext = GetObjectContext()
 19:     
 20:     ' エラーハンドラの設定
 21:     On Error GoTo ErrHandle
 22:     
 23:     ' DataObj.Slipコンポーネントの実体化
 24:     Set objDataSlip = CreateObject("DataObj.Slip")
 25:     
 26:     ' 経理処理ずみであるかどうかを調査
 27:     If objDataSlip.Get_SlipStatus(SlipID) <> Accounted Then
 28:         ' 経理処理ずみではない
 29:         Err.Raise BusinessError.ERR_CANTUPDATE, App.Title, _
                       "指定された伝票は経理処理ずみではありません"
 30:     End If
 31:     
 32:     ' 1枚単位で請求書を作成する伝票であるかどうかを調査
 33:     objDataSlip.GetRecord_Bill SlipID, BillID, BillDate, ONEBILLFLAG
 34:     If IsNull(ONEBILLFLAG) Or (ONEBILLFLAG = False) Then
 35:         ' 1枚単位で請求書を作成する伝票ではない
 36:         Err.Raise BusinessError.ERR_CANTUPDATE, App.Title, _
                       "指定された伝票は月単位で集計する伝票です"
 37:     End If
 38:     
 39:     ' 請求書の作成
 40:     ' 伝票の情報を取得
 41:     objDataSlip.GetRecord_Slip SlipID, CustomerID, SUBTOTAL, TAX, TOTAL, _
                                    MADEDATE, MADEUSER, LASTDATE, LASTUSER
 42:     objDataSlip.GetRecord_Accounting SlipID, ACCOUNTINGUSER, _
                                          ACCOUNTINGDATE, ACCOUNTINGCOMMENT
 43:     ' DataObj.Billコンポーネントの実体化
 44:     Set objDataBill = CreateObject("DataObj.Bill")
 45:     ' 請求書の作成
 46:     BillID = objDataBill.AddRecord(CustomerID, ACCOUNTINGDATE, ACCOUNTINGDATE, _
                                        SUBTOTAL, TAX, TOTAL)
 47:     
 48:     ' 返された請求書番号を戻り値として設定
 49:     MakeOneBill = BillID
 50:     
 51:     ' 伝票の状態を「請求書作成ずみ」に変更
 52:     objDataSlip.Set_MADEBILLFLAG SlipID, True
 53:     objDataSlip.Set_ACCOUNTINGFLAG SlipID, False, Null
 54:     
 55:     ' 請求書と伝票の連携
 56:     objDataSlip.SetBillID SlipID, BillID
 57:     
 58:     ' コンポーネントの解放
 59:     Set objDataBill = Nothing
 60:     Set objDataSlip = Nothing
 61:     
 62:     ' トランザクションのコミット
 63:     objContext.SetComplete
 64:     
 65:     ' オブジェクトコンテキストの解放
 66:     Set objContext = Nothing
 67:     
 68:     Exit Function
 69:     
 70: ErrHandle:
 71:     ' エラーハンドラ
 72:     objContext.SetAbort
 73:     Set objDataSlip = Nothing
 74:     Set objDataBill = Nothing
 75:     
 76:     ' エラーの再発行
 77:     Err.Raise Err.Number, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 78: End Function