chore: update README, init-script SQL, and obsidian documentation

Update README with latest changes. Revise init-script.sql with schema updates. Sync obsidian technical docs.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-06-24 23:44:06 +01:00
co-authored by Sisyphus
parent 4ac7768070
commit 5de0d49454
6 changed files with 196 additions and 52 deletions
+48 -27
View File
@@ -1363,31 +1363,50 @@ BEGIN
SELECT
start_date AS period_start,
end_date AS period_end,
COALESCE(SUM(p.amount), 0) AS total_sales,
COALESCE(SUM(
CASE
WHEN p.vat_amount IS NOT NULL THEN p.vat_amount
WHEN (SELECT is_vat_registered FROM business_settings WHERE id = 1) THEN
ROUND(p.amount - (p.amount / (1 + COALESCE(p.vat_rate,
(SELECT default_vat_rate FROM business_settings WHERE id = 1)) / 100)), 2)
ELSE 0
END
), 0) AS total_vat_charged,
COALESCE(SUM(
CASE
WHEN p.net_amount IS NOT NULL THEN p.net_amount
WHEN (SELECT is_vat_registered FROM business_settings WHERE id = 1) THEN
ROUND(p.amount / (1 + COALESCE(p.vat_rate,
(SELECT default_vat_rate FROM business_settings WHERE id = 1)) / 100), 2)
ELSE p.amount
END
), 0) AS net_sales,
COUNT(*) AS transaction_count
FROM payments p
JOIN bookings b ON p.booking_id = b.id
WHERE p.status = 'completed'
AND p.created_at::date BETWEEN start_date AND end_date
AND p.payment_type IN ('full', 'partial', 'balance');
COALESCE(SUM(total_sales), 0) AS total_sales,
COALESCE(SUM(total_vat_charged), 0) AS total_vat_charged,
COALESCE(SUM(net_sales), 0) AS net_sales,
COALESCE(SUM(transaction_count), 0)::BIGINT AS transaction_count
FROM (
SELECT
COALESCE(SUM(p.amount), 0) AS total_sales,
COALESCE(SUM(
CASE
WHEN p.vat_amount IS NOT NULL THEN p.vat_amount
WHEN (SELECT is_vat_registered FROM business_settings WHERE id = 1) THEN
ROUND(p.amount - (p.amount / (1 + COALESCE(p.vat_rate,
(SELECT default_vat_rate FROM business_settings WHERE id = 1)) / 100)), 2)
ELSE 0
END
), 0) AS total_vat_charged,
COALESCE(SUM(
CASE
WHEN p.net_amount IS NOT NULL THEN p.net_amount
WHEN (SELECT is_vat_registered FROM business_settings WHERE id = 1) THEN
ROUND(p.amount / (1 + COALESCE(p.vat_rate,
(SELECT default_vat_rate FROM business_settings WHERE id = 1)) / 100), 2)
ELSE p.amount
END
), 0) AS net_sales,
COUNT(*)::BIGINT AS transaction_count
FROM payments p
JOIN bookings b ON p.booking_id = b.id
WHERE p.status = 'completed'
AND p.created_at::date BETWEEN start_date AND end_date
AND p.payment_type IN ('full', 'partial', 'balance')
UNION ALL
SELECT
COALESCE(SUM(ts.total_amount), 0) AS total_sales,
COALESCE(SUM(COALESCE(ts.vat_amount, 0)), 0) AS total_vat_charged,
COALESCE(SUM(COALESCE(ts.net_amount, ts.total_amount)), 0) AS net_sales,
COUNT(*)::BIGINT AS transaction_count
FROM till_sales ts
WHERE ts.status = 'completed'
AND ts.payment_method != 'on_the_house'
AND ts.created_at::date BETWEEN start_date AND end_date
) sub;
END;
$$ LANGUAGE plpgsql;
@@ -1431,12 +1450,12 @@ BEGIN
p.amount AS gross_amount,
CASE
WHEN include_vat AND p.net_amount IS NOT NULL THEN p.net_amount
WHEN include_vat THEN ROUND(p.amount / 1.20, 2)
WHEN include_vat THEN COALESCE(p.net_amount, ROUND(p.amount / (1 + COALESCE(p.vat_rate, (SELECT default_vat_rate FROM business_settings)) / 100), 2))
ELSE p.amount
END AS net_amount,
CASE
WHEN include_vat AND p.vat_amount IS NOT NULL THEN p.vat_amount
WHEN include_vat THEN ROUND(p.amount - (p.amount / 1.20), 2)
WHEN include_vat THEN COALESCE(p.vat_amount, ROUND(p.amount - (p.amount / (1 + COALESCE(p.vat_rate, (SELECT default_vat_rate FROM business_settings)) / 100)), 2))
ELSE 0
END AS vat_amount,
CASE
@@ -2023,6 +2042,8 @@ CREATE TABLE financial_aggregates (
total_deposits NUMERIC(12,2) NOT NULL DEFAULT 0,
total_balances NUMERIC(12,2) NOT NULL DEFAULT 0,
total_partials NUMERIC(12,2) NOT NULL DEFAULT 0,
total_vat_amount NUMERIC(12,2) NOT NULL DEFAULT 0,
total_net_amount NUMERIC(12,2) NOT NULL DEFAULT 0,
booking_count INT NOT NULL DEFAULT 0,
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
);