75 lines
1.8 KiB
PL/PgSQL
75 lines
1.8 KiB
PL/PgSQL
create or replace function ems.fn_economics_lock_day(p_site_id int, p_day date)
|
|
returns jsonb
|
|
language plpgsql
|
|
as $fn$
|
|
declare
|
|
v_import_cost numeric;
|
|
v_export_rev numeric;
|
|
v_net numeric;
|
|
v_green numeric;
|
|
v_total numeric;
|
|
v_gic numeric;
|
|
v_ger numeric;
|
|
begin
|
|
select
|
|
r.import_cost_czk,
|
|
r.export_revenue_czk,
|
|
r.net_cost_czk,
|
|
r.green_bonus_czk,
|
|
r.total_balance_czk,
|
|
r.grid_import_cashflow_czk,
|
|
r.grid_export_revenue_czk
|
|
into strict
|
|
v_import_cost,
|
|
v_export_rev,
|
|
v_net,
|
|
v_green,
|
|
v_total,
|
|
v_gic,
|
|
v_ger
|
|
from ems.vw_economics_daily r
|
|
where r.site_id = p_site_id
|
|
and r.day_local = p_day;
|
|
|
|
insert into ems.audit_day_lock (
|
|
site_id,
|
|
day_local,
|
|
import_cost_czk,
|
|
export_revenue_czk,
|
|
net_cost_czk,
|
|
green_bonus_czk,
|
|
total_balance_czk,
|
|
grid_import_cashflow_czk,
|
|
grid_export_revenue_czk
|
|
)
|
|
values (
|
|
p_site_id,
|
|
p_day,
|
|
v_import_cost,
|
|
v_export_rev,
|
|
v_net,
|
|
v_green,
|
|
v_total,
|
|
v_gic,
|
|
v_ger
|
|
)
|
|
on conflict (site_id, day_local) do update set
|
|
import_cost_czk = excluded.import_cost_czk,
|
|
export_revenue_czk = excluded.export_revenue_czk,
|
|
net_cost_czk = excluded.net_cost_czk,
|
|
green_bonus_czk = excluded.green_bonus_czk,
|
|
total_balance_czk = excluded.total_balance_czk,
|
|
grid_import_cashflow_czk = excluded.grid_import_cashflow_czk,
|
|
grid_export_revenue_czk = excluded.grid_export_revenue_czk,
|
|
locked_at = now();
|
|
|
|
return jsonb_build_object('locked', true, 'day', p_day);
|
|
exception
|
|
when no_data_found then
|
|
return jsonb_build_object('locked', false, 'error', 'no_economics_data');
|
|
end;
|
|
$fn$;
|
|
|
|
comment on function ems.fn_economics_lock_day(int, date) is
|
|
'Zamkne den ekonomiky podle aktuálního vw_economics_daily (POST lock).';
|