From 7a9c913b8af92b63b4f03c3bf3808e6fbbcbd7fd Mon Sep 17 00:00:00 2001 From: Pablo Martin Date: Tue, 25 Jun 2024 14:07:45 +0200 Subject: [PATCH] line items --- .../int_xero__bank_transaction_line_items.sql | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 models/intermediate/xero/int_xero__bank_transaction_line_items.sql diff --git a/models/intermediate/xero/int_xero__bank_transaction_line_items.sql b/models/intermediate/xero/int_xero__bank_transaction_line_items.sql new file mode 100644 index 0000000..8aa023f --- /dev/null +++ b/models/intermediate/xero/int_xero__bank_transaction_line_items.sql @@ -0,0 +1,75 @@ +with + int_xero__bank_transactions as ( + select * from {{ ref("int_xero__bank_transactions") }} + ) + +select + bt.id_bank_transaction, + j.id_line_item, + j.quantity::numeric, + j.unit_amount::numeric, + j.line_amount_local_curr::numeric, + (j.line_amount_local_curr::numeric * bt.exchange_rate_to_gbp)::numeric( + 18, 4 + ) as line_amount_in_gbp, + case + when bt.line_amount_tax_inclusiveness = 'Inclusive' + then j.line_amount_local_curr::numeric - j.tax_amount_local_curr::numeric + when bt.line_amount_tax_inclusiveness = 'Exclusive' + then j.line_amount_local_curr::numeric + when bt.line_amount_tax_inclusiveness = 'NoTax' + then j.line_amount_local_curr::numeric + else null + end as line_amount_wo_taxes_local_curr, + case + when bt.line_amount_tax_inclusiveness = 'Inclusive' + then + (j.line_amount_local_curr::numeric * bt.exchange_rate_to_gbp)::numeric( + 18, + 4 + ) - (j.tax_amount_local_curr::numeric * bt.exchange_rate_to_gbp)::numeric( + 18, 4 + ) + when bt.line_amount_tax_inclusiveness = 'Exclusive' + then + (j.line_amount_local_curr::numeric * bt.exchange_rate_to_gbp)::numeric( + 18, 4 + ) + when bt.line_amount_tax_inclusiveness = 'NoTax' + then + (j.line_amount_local_curr::numeric * bt.exchange_rate_to_gbp)::numeric( + 18, 4 + ) + else null + end as line_amount_wo_taxes_in_gbp, + j.tax_amount_local_curr::numeric, + (j.tax_amount_local_curr::numeric * bt.exchange_rate_to_gbp)::numeric( + 18, 4 + ) as tax_amount_in_gbp, + j.tax_type, + bt.transaction_currency_iso_4217, + j.line_description, + j.id_account, + j.account_code, + j.item_code +from int_xero__bank_transactions bt +cross join + lateral( + select + (jsonb_array_elements(bt.line_items) ->> 'LineItemID') as id_line_item, + (jsonb_array_elements(bt.line_items) ->> 'AccountID') as id_account, + + (jsonb_array_elements(bt.line_items) ->> 'Quantity') as quantity, + (jsonb_array_elements(bt.line_items) ->> 'UnitAmount') as unit_amount, + ( + jsonb_array_elements(bt.line_items) ->> 'LineAmount' + ) as line_amount_local_curr, + ( + jsonb_array_elements(bt.line_items) ->> 'TaxAmount' + ) as tax_amount_local_curr, + (jsonb_array_elements(bt.line_items) ->> 'TaxType') as tax_type, + (jsonb_array_elements(bt.line_items) ->> 'Description') as line_description, + + (jsonb_array_elements(bt.line_items) ->> 'AccountCode') as account_code, + (jsonb_array_elements(bt.line_items) ->> 'ItemCode') as item_code + ) j