mirror of
https://github.com/acedanger/budget-database.git
synced 2025-12-05 22:50:13 -08:00
added support for multiple accounts in the budget detail table
This commit is contained in:
@@ -1,9 +1,25 @@
|
|||||||
|
|
||||||
create or replace procedure public.import_budget_from_csv()
|
create or replace procedure public.import_transactions_from_csv(
|
||||||
|
p_bank_name varchar
|
||||||
|
, p_bank_account_number varchar
|
||||||
|
)
|
||||||
language plpgsql
|
language plpgsql
|
||||||
as $$
|
as $$
|
||||||
|
|
||||||
|
declare
|
||||||
|
_acct int;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
|
||||||
|
raise notice 'PROC: import_transactions_from_csv';
|
||||||
|
raise notice 'INPUT: % p_bank_name = %; % p_bank_account_number = %;', E'\n', p_bank_name, E'\n', p_bank_account_number;
|
||||||
|
|
||||||
|
_acct := public.get_account_id(p_bank_name, p_bank_account_number);
|
||||||
|
|
||||||
|
if _acct is null then
|
||||||
|
raise exception 'could not get the account id for bank_name (%) and bank account number (%)', p_bank_name, p_bank_account_number;
|
||||||
|
end if;
|
||||||
|
|
||||||
truncate table public.budgetimport;
|
truncate table public.budgetimport;
|
||||||
|
|
||||||
copy
|
copy
|
||||||
@@ -12,8 +28,17 @@ from
|
|||||||
'/usr/share/budget.csv'
|
'/usr/share/budget.csv'
|
||||||
delimiter ',' csv header;
|
delimiter ',' csv header;
|
||||||
|
|
||||||
|
delete from public.budgetdetails where acct_id = _acct;
|
||||||
|
insert into public.budgetdetails (trx_description, trx_date, trx_amount, acct_id)
|
||||||
|
select
|
||||||
|
description
|
||||||
|
, cast(dt as date) as dt_converted
|
||||||
|
, amount
|
||||||
|
, _acct
|
||||||
|
from public.budgetimport;
|
||||||
|
|
||||||
end
|
end
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
GRANT EXECUTE ON PROCEDURE public.update_budget_from_import() TO acedanger;
|
GRANT EXECUTE ON PROCEDURE public.import_transactions_from_csv(varchar, varchar) TO acedanger;
|
||||||
GRANT EXECUTE ON PROCEDURE public.update_budget_from_import() TO budgetuser;
|
GRANT EXECUTE ON PROCEDURE public.import_transactions_from_csv(varchar, varchar) TO budgetuser;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
DROP TABLE public.budgetimport;
|
DROP TABLE public.budgetimport;
|
||||||
|
|
||||||
create table public.budgetimport (
|
create table public.budgetimport (
|
||||||
dt bpchar(10) NULL,
|
dt bpchar(20) NULL,
|
||||||
amount numeric(10, 2) NULL,
|
amount numeric(10, 2) NULL,
|
||||||
description bpchar(200) NULL
|
description bpchar(200) NULL
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -3,19 +3,21 @@ drop view if exists public.runbal;
|
|||||||
create view public.runbal
|
create view public.runbal
|
||||||
as
|
as
|
||||||
select
|
select
|
||||||
acct.bank_name
|
acct.bank_name
|
||||||
, acct.account_type
|
, acct.account_type
|
||||||
, acct.account_number
|
, acct.account_number
|
||||||
, acct.friendly_name
|
, acct.friendly_name
|
||||||
, det.trx_date
|
, trx.trx_date
|
||||||
, det.trx_description
|
, trx.trx_description
|
||||||
, det.trx_amount::numeric(8,2)
|
, trx.trx_amount::numeric(8,2)
|
||||||
, to_char(det.trx_date, 'day') day_of_week
|
, to_char(trx.trx_date, 'day') day_of_week
|
||||||
, sum(det.trx_amount) over(
|
, sum(trx.trx_amount)
|
||||||
order by
|
over(
|
||||||
det.trx_date
|
partition by trx.acct_id
|
||||||
, det.trx_amount desc rows unbounded preceding
|
order by
|
||||||
) running_bal
|
trx.trx_date
|
||||||
|
, trx.trx_amount desc rows unbounded preceding
|
||||||
|
) running_bal
|
||||||
from
|
from
|
||||||
public.budgetdetails det
|
public.budgetdetails trx
|
||||||
join public.accounts acct using (acct_id)
|
join public.accounts acct using (acct_id)
|
||||||
|
|||||||
Reference in New Issue
Block a user