From 340a53a3d5a26f5744802c0238752f6f4944393e Mon Sep 17 00:00:00 2001 From: Michael Hoennig Date: Thu, 11 Jan 2024 09:34:10 +0100 Subject: [PATCH] add column vatReverseCharge to table hs_office_debitor + view hs_office_debitor_rv --- .../office/debitor/HsOfficeDebitorEntity.java | 25 +++++++++++++++---- .../db/changelog/270-hs-office-debitor.sql | 3 ++- .../changelog/273-hs-office-debitor-rbac.sql | 1 + .../278-hs-office-debitor-test-data.sql | 4 +-- 4 files changed, 25 insertions(+), 8 deletions(-) diff --git a/src/main/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntity.java b/src/main/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntity.java index 6520935d..dd5637dc 100644 --- a/src/main/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntity.java +++ b/src/main/java/net/hostsharing/hsadminng/hs/office/debitor/HsOfficeDebitorEntity.java @@ -10,6 +10,7 @@ import net.hostsharing.hsadminng.stringify.Stringifyable; import org.hibernate.annotations.GenericGenerator; import jakarta.persistence.*; +import java.util.Optional; import java.util.UUID; import static net.hostsharing.hsadminng.stringify.Stringify.stringify; @@ -28,6 +29,7 @@ public class HsOfficeDebitorEntity implements Stringifyable { stringify(HsOfficeDebitorEntity.class, "debitor") .withProp(HsOfficeDebitorEntity::getDebitorNumber) .withProp(HsOfficeDebitorEntity::getPartner) + // TODO: add defaultPrefix? .withSeparator(": ") .quotedValues(false); @@ -59,21 +61,34 @@ public class HsOfficeDebitorEntity implements Stringifyable { @Column(name = "vatbusiness") private boolean vatBusiness; + @Column(name = "vatreversecharge") + private boolean vatReverseCharge; + @ManyToOne @JoinColumn(name = "refundbankaccountuuid") private HsOfficeBankAccountEntity refundBankAccount; + @Column(name = "defaultprefix", columnDefinition = "char(3) not null") + private String defaultPrefix; + public String getDebitorNumberString() { + // TODO: refactor + if (partner.getDebitorNumberPrefix() == null ) { + if (debitorNumberSuffix == null) { + return null; + } + return String.format("%02d", debitorNumberSuffix); + } + if (debitorNumberSuffix == null) { + return partner.getDebitorNumberPrefix() + "??"; + } return partner.getDebitorNumberPrefix() + String.format("%02d", debitorNumberSuffix); } - public int getDebitorNumber() { - return Integer.parseInt(getDebitorNumberString()); + public Integer getDebitorNumber() { + return Optional.ofNullable(getDebitorNumberString()).map(Integer::parseInt).orElse(null); } - @Column(name = "defaultprefix", columnDefinition = "char(3) not null") - private String defaultPrefix; - @Override public String toString() { return stringify.apply(this); diff --git a/src/main/resources/db/changelog/270-hs-office-debitor.sql b/src/main/resources/db/changelog/270-hs-office-debitor.sql index a860ab80..c11ab269 100644 --- a/src/main/resources/db/changelog/270-hs-office-debitor.sql +++ b/src/main/resources/db/changelog/270-hs-office-debitor.sql @@ -13,7 +13,8 @@ create table hs_office_debitor billingContactUuid uuid not null references hs_office_contact(uuid), vatId varchar(24), -- TODO.spec: here or in person? vatCountryCode varchar(2), - vatBusiness boolean not null, -- TODO.spec: more of such? + vatBusiness boolean not null, + vatReverseCharge boolean not null, refundBankAccountUuid uuid references hs_office_bankaccount(uuid), defaultPrefix char(3) not null constraint check_member_code check ( diff --git a/src/main/resources/db/changelog/273-hs-office-debitor-rbac.sql b/src/main/resources/db/changelog/273-hs-office-debitor-rbac.sql index 172ae33a..78daaea5 100644 --- a/src/main/resources/db/changelog/273-hs-office-debitor-rbac.sql +++ b/src/main/resources/db/changelog/273-hs-office-debitor-rbac.sql @@ -193,6 +193,7 @@ call generateRbacRestrictedView('hs_office_debitor', 'target.debitorNumberSuffix vatId = new.vatId, vatCountryCode = new.vatCountryCode, vatBusiness = new.vatBusiness, + vatreversecharge = new.vatreversecharge, defaultPrefix = new.defaultPrefix $updates$); --// diff --git a/src/main/resources/db/changelog/278-hs-office-debitor-test-data.sql b/src/main/resources/db/changelog/278-hs-office-debitor-test-data.sql index 3b7fb81e..74cefde0 100644 --- a/src/main/resources/db/changelog/278-hs-office-debitor-test-data.sql +++ b/src/main/resources/db/changelog/278-hs-office-debitor-test-data.sql @@ -38,8 +38,8 @@ begin raise notice '- using partner (%): %', relatedPartner.uuid, relatedPartner; raise notice '- using billingContact (%): %', relatedContact.uuid, relatedContact; insert - into hs_office_debitor (uuid, partneruuid, debitornumbersuffix, billable, billingcontactuuid, vatbusiness, refundbankaccountuuid, defaultprefix) - values (uuid_generate_v4(), relatedPartner.uuid, debitorNumberSuffix, true, relatedContact.uuid, true, relatedBankAccountUuid, defaultPrefix); + into hs_office_debitor (uuid, partneruuid, debitornumbersuffix, billable, billingcontactuuid, vatbusiness, vatreversecharge, refundbankaccountuuid, defaultprefix) + values (uuid_generate_v4(), relatedPartner.uuid, debitorNumberSuffix, true, relatedContact.uuid, true, false, relatedBankAccountUuid, defaultPrefix); end; $$; --//