This commit is contained in:
FNOS-WIN11ENT\choshoukaku
2025-12-18 15:30:39 +09:00
parent 88163423e0
commit 87fa1aaa1f
12 changed files with 742 additions and 192 deletions

47
backend/sql/schema.sql Normal file
View File

@@ -0,0 +1,47 @@
CREATE OR REPLACE FUNCTION fn_check_month_locked(p_date date)
RETURNS void
LANGUAGE plpgsql
AS $$
BEGIN
IF EXISTS (
SELECT 1
FROM month_locks
WHERE lock_month = date_trunc('month', p_date)
AND is_locked = true
) THEN
RAISE EXCEPTION
'该月份已锁定,不能操作该仕訳(%',
to_char(p_date, 'YYYY-MM');
END IF;
END;
$$;
CREATE OR REPLACE FUNCTION trg_journal_entries_month_lock()
RETURNS trigger
LANGUAGE plpgsql
AS $$
BEGIN
IF TG_OP = 'INSERT' THEN
PERFORM fn_check_month_locked(NEW.journal_date);
RETURN NEW;
END IF;
IF TG_OP = 'UPDATE' THEN
PERFORM fn_check_month_locked(OLD.journal_date);
RETURN NEW;
END IF;
IF TG_OP = 'DELETE' THEN
PERFORM fn_check_month_locked(OLD.journal_date);
RETURN OLD;
END IF;
RETURN NULL;
END;
$$;
CREATE TRIGGER trg_journal_entries_month_lock
BEFORE INSERT OR UPDATE OR DELETE
ON journal_entries
FOR EACH ROW
EXECUTE FUNCTION trg_journal_entries_month_lock();