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