memberNumber as partnerNumber+memberNumberSuffix #13
@ -59,8 +59,8 @@ public class HsOfficeMembershipEntity implements HasUuid, Stringifyable {
|
||||
@Type(PostgreSQLRangeType.class)
|
||||
private Range<LocalDate> validity;
|
||||
|
||||
@Column(name = "membership_fee_billable")
|
||||
private boolean membershipFeeBillable;
|
||||
@Column(name = "membershipfeebillable", nullable = false)
|
||||
private Boolean membershipFeeBillable; // not primitive to force setting the value
|
||||
|
||||
@Column(name = "reasonfortermination")
|
||||
@Enumerated(EnumType.STRING)
|
||||
|
@ -37,6 +37,8 @@ public class HsOfficeMembershipEntityPatcher implements EntityPatcher<HsOfficeMe
|
||||
Optional.ofNullable(resource.getReasonForTermination())
|
||||
.map(v -> mapper.map(v, HsOfficeReasonForTermination.class))
|
||||
.ifPresent(entity::setReasonForTermination);
|
||||
OptionalFromJson.of(resource.getMembershipFeeBillable()).ifPresent(
|
||||
entity::setMembershipFeeBillable);
|
||||
}
|
||||
|
||||
private void verifyNotNull(final UUID newValue, final String propertyName) {
|
||||
|
@ -33,6 +33,8 @@ components:
|
||||
format: date
|
||||
reasonForTermination:
|
||||
$ref: '#/components/schemas/HsOfficeReasonForTermination'
|
||||
membershipFeeBillable:
|
||||
type: boolean
|
||||
|
||||
HsOfficeMembershipPatch:
|
||||
type: object
|
||||
@ -48,6 +50,9 @@ components:
|
||||
reasonForTermination:
|
||||
nullable: true
|
||||
$ref: '#/components/schemas/HsOfficeReasonForTermination'
|
||||
membershipFeeBillable:
|
||||
nullable: true
|
||||
type: boolean
|
||||
additionalProperties: false
|
||||
|
||||
HsOfficeMembershipInsert:
|
||||
@ -74,8 +79,12 @@ components:
|
||||
nullable: true
|
||||
reasonForTermination:
|
||||
$ref: '#/components/schemas/HsOfficeReasonForTermination'
|
||||
membershipFeeBillable:
|
||||
nullable: false
|
||||
type: boolean
|
||||
required:
|
||||
- partnerUuid
|
||||
- mainDebitorUuid
|
||||
- validFrom
|
||||
- membershipFeeBillable
|
||||
additionalProperties: false
|
||||
|
@ -16,7 +16,7 @@ create table if not exists hs_office_membership
|
||||
memberNumber numeric(5) not null unique,
|
||||
hsh-michaelhoennig marked this conversation as resolved
|
||||
validity daterange not null,
|
||||
reasonForTermination HsOfficeReasonForTermination not null default 'NONE',
|
||||
membership_fee_billable boolean not null default true
|
||||
membershipFeeBillable boolean not null default true
|
||||
);
|
||||
--//
|
||||
|
||||
|
@ -106,7 +106,7 @@ call generateRbacRestrictedView('hs_office_membership',
|
||||
columnUpdates => $updates$
|
||||
validity = new.validity,
|
||||
reasonForTermination = new.reasonForTermination,
|
||||
membership_fee_billable = new.membership_fee_billable
|
||||
membershipFeeBillable = new.membershipFeeBillable
|
||||
$updates$);
|
||||
--//
|
||||
|
||||
|
@ -131,7 +131,8 @@ class HsOfficeMembershipControllerAcceptanceTest {
|
||||
"partnerUuid": "%s",
|
||||
"mainDebitorUuid": "%s",
|
||||
"memberNumber": 20001,
|
||||
"validFrom": "2022-10-13"
|
||||
"validFrom": "2022-10-13",
|
||||
"membershipFeeBillable": "true"
|
||||
}
|
||||
""".formatted(givenPartner.getUuid(), givenDebitor.getUuid()))
|
||||
.port(port)
|
||||
@ -446,6 +447,7 @@ class HsOfficeMembershipControllerAcceptanceTest {
|
||||
.memberNumber(++tempMemberNumber)
|
||||
.validity(Range.closedInfinite(LocalDate.parse("2022-11-01")))
|
||||
.reasonForTermination(NONE)
|
||||
.membershipFeeBillable(true)
|
||||
.build();
|
||||
|
||||
return membershipRepo.save(newMembership);
|
||||
|
@ -72,7 +72,8 @@ public class HsOfficeMembershipControllerRestTest {
|
||||
"partnerUuid": null,
|
||||
"mainDebitorUuid": "%s",
|
||||
"memberNumber": 20001,
|
||||
"validFrom": "2022-10-13"
|
||||
"validFrom": "2022-10-13",
|
||||
"membershipFeeBillable": "true"
|
||||
}
|
||||
""".formatted(UUID.randomUUID()))
|
||||
.accept(MediaType.APPLICATION_JSON))
|
||||
@ -97,7 +98,8 @@ public class HsOfficeMembershipControllerRestTest {
|
||||
"partnerUuid": "%s",
|
||||
"mainDebitorUuid": null,
|
||||
"memberNumber": 20001,
|
||||
"validFrom": "2022-10-13"
|
||||
"validFrom": "2022-10-13",
|
||||
"membershipFeeBillable": "true"
|
||||
}
|
||||
""".formatted(UUID.randomUUID()))
|
||||
.accept(MediaType.APPLICATION_JSON))
|
||||
@ -128,7 +130,8 @@ public class HsOfficeMembershipControllerRestTest {
|
||||
"partnerUuid": "%s",
|
||||
"mainDebitorUuid": "%s",
|
||||
"memberNumber": 20001,
|
||||
"validFrom": "2022-10-13"
|
||||
"validFrom": "2022-10-13",
|
||||
"membershipFeeBillable": "true"
|
||||
}
|
||||
""".formatted(givenPartnerUuid, givenMainDebitorUuid))
|
||||
.accept(MediaType.APPLICATION_JSON))
|
||||
@ -159,7 +162,8 @@ public class HsOfficeMembershipControllerRestTest {
|
||||
"partnerUuid": "%s",
|
||||
"mainDebitorUuid": "%s",
|
||||
"memberNumber": 20001,
|
||||
"validFrom": "2022-10-13"
|
||||
"validFrom": "2022-10-13",
|
||||
"membershipFeeBillable": "true"
|
||||
}
|
||||
""".formatted(givenPartnerUuid, givenMainDebitorUuid))
|
||||
.accept(MediaType.APPLICATION_JSON))
|
||||
|
@ -36,6 +36,9 @@ class HsOfficeMembershipEntityPatcherUnitTest extends PatchUnitTestBase<
|
||||
private static final LocalDate GIVEN_VALID_FROM = LocalDate.parse("2020-04-15");
|
||||
private static final LocalDate PATCHED_VALID_TO = LocalDate.parse("2022-12-31");
|
||||
|
||||
private static final Boolean GIVEN_MEMBERSHIP_FEE_BILLABLE = true;
|
||||
private static final Boolean PATCHED_MEMBERSHIP_FEE_BILLABLE = false;
|
||||
|
||||
@Mock
|
||||
private EntityManager em;
|
||||
|
||||
@ -56,6 +59,7 @@ class HsOfficeMembershipEntityPatcherUnitTest extends PatchUnitTestBase<
|
||||
entity.setMainDebitor(TEST_DEBITOR);
|
||||
entity.setPartner(TEST_PARTNER);
|
||||
entity.setValidity(Range.closedInfinite(GIVEN_VALID_FROM));
|
||||
entity.setMembershipFeeBillable(GIVEN_MEMBERSHIP_FEE_BILLABLE);
|
||||
return entity;
|
||||
}
|
||||
|
||||
@ -90,7 +94,12 @@ class HsOfficeMembershipEntityPatcherUnitTest extends PatchUnitTestBase<
|
||||
HsOfficeReasonForTerminationResource.CANCELLATION,
|
||||
HsOfficeMembershipEntity::setReasonForTermination,
|
||||
HsOfficeReasonForTermination.CANCELLATION)
|
||||
.notNullable()
|
||||
.notNullable(),
|
||||
new JsonNullableProperty<>(
|
||||
"membershipFeeBillable",
|
||||
HsOfficeMembershipPatchResource::setMembershipFeeBillable,
|
||||
PATCHED_MEMBERSHIP_FEE_BILLABLE,
|
||||
HsOfficeMembershipEntity::setMembershipFeeBillable)
|
||||
);
|
||||
}
|
||||
|
||||
@ -99,10 +108,4 @@ class HsOfficeMembershipEntityPatcherUnitTest extends PatchUnitTestBase<
|
||||
newDebitor.setUuid(uuid);
|
||||
return newDebitor;
|
||||
}
|
||||
|
||||
private HsOfficeMembershipEntity newMembership(final UUID uuid) {
|
||||
final var newMembership = new HsOfficeMembershipEntity();
|
||||
newMembership.setUuid(uuid);
|
||||
return newMembership;
|
||||
}
|
||||
}
|
||||
|
@ -81,6 +81,7 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTest {
|
||||
.partner(givenPartner)
|
||||
.mainDebitor(givenDebitor)
|
||||
.validity(Range.closedInfinite(LocalDate.parse("2020-01-01")))
|
||||
.membershipFeeBillable(true)
|
||||
.build());
|
||||
return membershipRepo.save(newMembership);
|
||||
});
|
||||
@ -111,6 +112,7 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTest {
|
||||
.partner(givenPartner)
|
||||
.mainDebitor(givenDebitor)
|
||||
.validity(Range.closedInfinite(LocalDate.parse("2020-01-01")))
|
||||
.membershipFeeBillable(true)
|
||||
.build());
|
||||
return membershipRepo.save(newMembership);
|
||||
});
|
||||
@ -416,6 +418,7 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTest {
|
||||
.partner(givenPartner)
|
||||
.mainDebitor(givenDebitor)
|
||||
.validity(Range.closedInfinite(LocalDate.parse("2020-01-01")))
|
||||
.membershipFeeBillable(true)
|
||||
.build();
|
||||
|
||||
toCleanup(newMembership);
|
||||
|
Loading…
Reference in New Issue
Block a user
add unique constraint mit partnerNumber