Co-authored-by: Michael Hoennig <michael@hoennig.de> Reviewed-on: https://dev.hostsharing.net/hostsharing/hs.hsadmin.ng/pulls/20 Reviewed-by: Timotheus Pokorra <timotheus.pokorra@hostsharing.net>
65 lines
2.3 KiB
PL/PgSQL
65 lines
2.3 KiB
PL/PgSQL
--liquibase formatted sql
|
|
|
|
-- ============================================================================
|
|
--changeset hs-office-debitor-MAIN-TABLE:1 endDelimiter:--//
|
|
-- ----------------------------------------------------------------------------
|
|
|
|
create table hs_office_debitor
|
|
(
|
|
uuid uuid unique references RbacObject (uuid) initially deferred,
|
|
debitorNumberSuffix numeric(2) not null,
|
|
debitorRelUuid uuid not null references hs_office_relation(uuid),
|
|
billable boolean not null default true,
|
|
vatId varchar(24), -- TODO.spec: here or in person?
|
|
vatCountryCode varchar(2),
|
|
vatBusiness boolean not null,
|
|
vatReverseCharge boolean not null,
|
|
refundBankAccountUuid uuid references hs_office_bankaccount(uuid),
|
|
defaultPrefix char(3) not null unique
|
|
constraint check_default_prefix check (
|
|
defaultPrefix::text ~ '^([a-z]{3}|al0|bh1|c4s|f3k|k8i|l3d|mh1|o13|p2m|s80|t4w)$'
|
|
)
|
|
);
|
|
--//
|
|
|
|
|
|
-- ============================================================================
|
|
--changeset hs-office-debitor-DELETE-DEPENDENTS-TRIGGER:1 endDelimiter:--//
|
|
-- ----------------------------------------------------------------------------
|
|
|
|
/**
|
|
Trigger function to delete related rows of a debitor to delete.
|
|
*/
|
|
create or replace function deleteHsOfficeDependentsOnDebitorDelete()
|
|
returns trigger
|
|
language PLPGSQL
|
|
as $$
|
|
declare
|
|
counter integer;
|
|
begin
|
|
DELETE FROM hs_office_relation r WHERE r.uuid = OLD.debitorRelUuid;
|
|
GET DIAGNOSTICS counter = ROW_COUNT;
|
|
if counter = 0 then
|
|
raise exception 'debitor relation % could not be deleted', OLD.debitorRelUuid;
|
|
end if;
|
|
|
|
RETURN OLD;
|
|
end; $$;
|
|
|
|
/**
|
|
Triggers deletion of related details of a debitor to delete.
|
|
*/
|
|
create trigger hs_office_debitor_delete_dependents_trigger
|
|
after delete
|
|
on hs_office_debitor
|
|
for each row
|
|
execute procedure deleteHsOfficeDependentsOnDebitorDelete();
|
|
|
|
|
|
-- ============================================================================
|
|
--changeset hs-office-debitor-MAIN-TABLE-JOURNAL:1 endDelimiter:--//
|
|
-- ----------------------------------------------------------------------------
|
|
|
|
call create_journal('hs_office_debitor');
|
|
--//
|