mirror of
https://github.com/renee-png/acmcc.git
synced 2026-06-21 09:50:01 +00:00
96de47496a
Bridgewater's GL was imported as single-sided postings missing its opening fund balance, leaving the trial balance off by 130,348.76 with an abnormal debit equity balance. Record the gap as an Opening Fund Balance equity credit (migration 20260602150000); R1 and the Balance Sheet now tie out exactly. A/R-A/P sub-ledger checks (R7/R8) only apply to platform-managed companies whose invoices/bills post to the GL. Imported-GL companies (Bent Oak, Bridgewater) keep their own AR/AP, so scope R7/R8 to gl_managed companies (new arApApplicable flag on reconcile + gl_auto_post surfaced in useReportData). Every company now passes the Reconciliation report. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
79 lines
3.8 KiB
SQL
79 lines
3.8 KiB
SQL
-- Bridgewater: record the missing opening fund balance as equity.
|
|
--
|
|
-- Bridgewater's GL was imported as ~22,300 single-sided postings (a transaction
|
|
-- register, not double-entry pairs). As a result the trial balance is internally
|
|
-- unbalanced: total debits exceed total credits by exactly 130,348.76, and equity
|
|
-- carries an abnormal debit balance. The signature is an import that brought in all
|
|
-- the ACTIVITY (assets, income, expense, etc.) but never the opening fund balance /
|
|
-- carried-forward equity from the prior system (Bridgewater has zero
|
|
-- opening_balances rows).
|
|
--
|
|
-- Per the owner's decision, attribute the gap to opening equity: post the missing
|
|
-- offsetting credit to an "Opening Fund Balance" equity account. Because the rest of
|
|
-- the imported GL is single-sided, the balancing leg is a single credit line whose
|
|
-- offsetting debits are already embedded in the imported asset/activity postings.
|
|
-- After this, total debits = total credits (R1 = 0) and the Balance Sheet balances:
|
|
-- Assets 731,193.60 = Liabilities 33,043.72 + Equity 90,210.00 + Net income 607,939.88.
|
|
--
|
|
-- Idempotent and reversible: keyed by external_source 'acmacc_bw_opening'; re-running
|
|
-- recomputes from the current imbalance. To undo, delete the JE/account with that key.
|
|
|
|
do $$
|
|
declare _c uuid; _eq uuid; _je uuid; _dt date; _imb numeric;
|
|
begin
|
|
select id into _c from accounting.companies where name like 'Bridgewater%';
|
|
if _c is null then raise exception 'Bridgewater company not found'; end if;
|
|
|
|
-- Remove any prior balancing entry so we recompute from the live imbalance.
|
|
delete from accounting.journal_entry_lines jl
|
|
using accounting.journal_entries je
|
|
where jl.journal_entry_id = je.id
|
|
and je.company_id = _c and je.external_source = 'acmacc_bw_opening';
|
|
delete from accounting.journal_entries
|
|
where company_id = _c and external_source = 'acmacc_bw_opening';
|
|
|
|
-- Exact imported-GL imbalance (debits - credits).
|
|
select round(sum(jl.debit) - sum(jl.credit), 2) into _imb
|
|
from accounting.journal_entry_lines jl
|
|
join accounting.journal_entries je on je.id = jl.journal_entry_id
|
|
where je.company_id = _c;
|
|
|
|
if _imb is null or _imb = 0 then
|
|
raise notice 'Bridgewater GL already balanced; nothing to post.';
|
|
return;
|
|
end if;
|
|
|
|
-- Opening date = earliest GL date (so it reads as a brought-forward balance).
|
|
select min(je.date) into _dt from accounting.journal_entries je where je.company_id = _c;
|
|
|
|
-- Find or create the Opening Fund Balance equity account.
|
|
select id into _eq from accounting.accounts
|
|
where company_id = _c and type = 'equity'
|
|
and (external_source = 'acmacc_bw_opening' or name = 'Opening Fund Balance')
|
|
limit 1;
|
|
if _eq is null then
|
|
insert into accounting.accounts (company_id, code, name, type, description, external_source, external_id)
|
|
values (_c, '3900', 'Opening Fund Balance', 'equity',
|
|
'Carried-forward fund balance not included in the original GL import.',
|
|
'acmacc_bw_opening', 'equity')
|
|
returning id into _eq;
|
|
end if;
|
|
|
|
-- Post the missing opening equity. Imbalance is debits>credits, so we add a credit
|
|
-- (a debit imbalance would add a debit instead).
|
|
insert into accounting.journal_entries (company_id, date, description, external_source, external_id)
|
|
values (_c, coalesce(_dt, current_date), 'Opening fund balance (carried forward, not in original import)',
|
|
'acmacc_bw_opening', 'gap')
|
|
returning id into _je;
|
|
|
|
if _imb > 0 then
|
|
insert into accounting.journal_entry_lines (journal_entry_id, account_id, debit, credit, description)
|
|
values (_je, _eq, 0, _imb, 'Opening fund balance');
|
|
else
|
|
insert into accounting.journal_entry_lines (journal_entry_id, account_id, debit, credit, description)
|
|
values (_je, _eq, -_imb, 0, 'Opening fund balance');
|
|
end if;
|
|
|
|
raise notice 'Bridgewater opening fund balance posted: %', _imb;
|
|
end$$;
|