次の請求書に対応する会計エントリーを取得するとします。
会計エントリーは次のようになります:
詳細を見る前に、確認すべき点がいくつかあります。
まず、この変換はかなり複雑で、2 行の請求書から 6 つの動作のあるエントリーを生成する必要があります (このうち 4 つは固定であり、ほかの 2 つはドキュメントの行に応じて変化します)。
所定の動作は次のとおりです:
- cash/bank: 請求書の合計がここに入ります。
- Sale: 請求書の小計がここに入ります。
- Tax: 請求書の課税額がここに入ります。
- Total Item Costs: 全製品のコストの合計がここに入ります。この例では、DVD(US $ 30) とマウス(US $ 10) の合計です。
また、請求書の行ごとに動作があり、各費用は各行に対応します (製品の費用×行の数)
CR = 84 + 40 = DB = 70 + 14 + 30 + 10 である点に注意してください。
次は、出力に問題が発生した場合です。データプロバイダーがこれを解決します。
最後は、意図が宣言済みであり変換プロセスを指定していない場合です。出力のみを宣言します。
Entry
{
EntryDate = InvoiceDate
EntryDescription = 'Invoice ' + InvoiceId
Movements
{
Movement
{
AccountId = ObtainAccount.udp('Cash/Bank')
MoveType = 'CR'
MoveAmount = InvoiceTotal
}
Movement
{
AccountId = ObtainAccount.udp('Debtors')
MoveType = 'DB'
MoveAmount = InvoiceTotal
}
Movement
{
AccountId = ObtainAccount.udp('TAX')
MoveType = 'CR'
MoveAmount = InvoiceSubTotal * 0.20 // 税率 20% に対応
}
Movement
{
AccountId = AccountForProduct.udp(ProductId)
MoveType = 'DB'
&MoveAmount = ProductCost.udp(ProductId) * InvoiceLineQuantity
MoveAmount = &MoveAmount
}
Movement
{
AccountId = ObtainAccount.udp('SaleCost')
MoveType = 'CR'
MoveAmount = &MoveAmount
}
}
}
この宣言は非常に簡単ですが、データプロバイダーでの機能は劣りません。例では式を使用していますが、フィルタ、さまざまな出力、その他いろいろなものを使用できます。データプロバイダーは、強力さと同時に手に入れがたいシンプルさを兼ね備えたオブジェクトです。
|