add scenario shouldCreateSelfDebitorForPartnerWithIdenticalContactData
This commit is contained in:
parent
6d3f191d1a
commit
9f1bb284e7
@ -185,18 +185,19 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
|
|||||||
private void optionallyUpdateRelatedRelations(final HsOfficePartnerRbacEntity saved, final HsOfficePersonRealEntity previousPartnerPerson) {
|
private void optionallyUpdateRelatedRelations(final HsOfficePartnerRbacEntity saved, final HsOfficePersonRealEntity previousPartnerPerson) {
|
||||||
final var partnerPersonHasChanged = !saved.getPartnerRel().getHolder().getUuid().equals(previousPartnerPerson.getUuid());
|
final var partnerPersonHasChanged = !saved.getPartnerRel().getHolder().getUuid().equals(previousPartnerPerson.getUuid());
|
||||||
if (partnerPersonHasChanged) {
|
if (partnerPersonHasChanged) {
|
||||||
em.createNativeQuery("""
|
final var count = em.createNativeQuery("""
|
||||||
UPDATE hs_office.relation
|
UPDATE hs_office.relation
|
||||||
SET anchorUuid = :newPartnerPersonUuid
|
SET holderUuid = :newPartnerPersonUuid
|
||||||
WHERE anchorUuid = :oldPartnerPersonUuid
|
WHERE type = 'DEBITOR' AND holderUuid = :oldPartnerPersonUuid AND anchorUuid = :oldPartnerPersonUuid
|
||||||
""")
|
""")
|
||||||
.setParameter("oldPartnerPersonUuid", previousPartnerPerson.getUuid())
|
.setParameter("oldPartnerPersonUuid", previousPartnerPerson.getUuid())
|
||||||
.setParameter("newPartnerPersonUuid", saved.getPartnerRel().getHolder().getUuid())
|
.setParameter("newPartnerPersonUuid", saved.getPartnerRel().getHolder().getUuid())
|
||||||
.executeUpdate();
|
.executeUpdate();
|
||||||
|
System.out.println(count); // FIXME: remove
|
||||||
em.createNativeQuery("""
|
em.createNativeQuery("""
|
||||||
UPDATE hs_office.relation
|
UPDATE hs_office.relation
|
||||||
SET holderUuid = :newPartnerPersonUuid
|
SET anchorUuid = :newPartnerPersonUuid
|
||||||
WHERE holderUuid = :oldPartnerPersonUuid AND type = 'DEBITOR'
|
WHERE anchorUuid = :oldPartnerPersonUuid
|
||||||
""")
|
""")
|
||||||
.setParameter("oldPartnerPersonUuid", previousPartnerPerson.getUuid())
|
.setParameter("oldPartnerPersonUuid", previousPartnerPerson.getUuid())
|
||||||
.setParameter("newPartnerPersonUuid", saved.getPartnerRel().getHolder().getUuid())
|
.setParameter("newPartnerPersonUuid", saved.getPartnerRel().getHolder().getUuid())
|
||||||
|
@ -7,6 +7,7 @@ import net.hostsharing.hsadminng.hs.office.scenarios.contact.RemovePhoneNumberFr
|
|||||||
import net.hostsharing.hsadminng.hs.office.scenarios.contact.ReplaceContactData;
|
import net.hostsharing.hsadminng.hs.office.scenarios.contact.ReplaceContactData;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateExternalDebitorForPartner;
|
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateExternalDebitorForPartner;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateSelfDebitorForPartner;
|
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateSelfDebitorForPartner;
|
||||||
|
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateSelfDebitorForPartnerWithIdenticalContactData;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateSepaMandateForDebitor;
|
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateSepaMandateForDebitor;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.DeleteDebitor;
|
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.DeleteDebitor;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.DontDeleteDefaultDebitor;
|
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.DontDeleteDefaultDebitor;
|
||||||
@ -265,11 +266,27 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
|||||||
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
|
||||||
class DebitorScenarios {
|
class DebitorScenarios {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@Order(2000)
|
||||||
|
@Requires("Partner: P-31011 - Michelle Matthieu")
|
||||||
|
@Produces("Debitor: D-3101100 - Michelle Matthieu")
|
||||||
|
void shouldCreateSelfDebitorForPartnerWithIdenticalContactData() {
|
||||||
|
new CreateSelfDebitorForPartnerWithIdenticalContactData(scenarioTest)
|
||||||
|
.given("partnerNumber", "P-31011")
|
||||||
|
.given("debitorNumberSuffix", "00") // TODO.impl: could be assigned automatically, but is not yet
|
||||||
|
.given("billable", true)
|
||||||
|
.given("vatBusiness", false)
|
||||||
|
.given("vatReverseCharge", false)
|
||||||
|
.given("defaultPrefix", "mim")
|
||||||
|
.doRun()
|
||||||
|
.keep();
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(2010)
|
@Order(2010)
|
||||||
@Requires("Partner: P-31010 - Test AG")
|
@Requires("Partner: P-31010 - Test AG")
|
||||||
@Produces("Debitor: D-3101000 - Test AG - main debitor")
|
@Produces("Debitor: D-3101000 - Test AG - main debitor")
|
||||||
void shouldCreateSelfDebitorForPartner() {
|
void shouldCreateSelfDebitorForPartnerWithDistinctContactData() {
|
||||||
new CreateSelfDebitorForPartner(scenarioTest)
|
new CreateSelfDebitorForPartner(scenarioTest)
|
||||||
.given("partnerPersonTradeName", "Test AG")
|
.given("partnerPersonTradeName", "Test AG")
|
||||||
.given("billingContactCaption", "Test AG - billing department")
|
.given("billingContactCaption", "Test AG - billing department")
|
||||||
@ -654,7 +671,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
|||||||
|
|
||||||
@Test
|
@Test
|
||||||
@Order(6010)
|
@Order(6010)
|
||||||
@Requires("Partner: P-31011 - Michelle Matthieu")
|
@Requires("Debitor: D-3101100 - Michelle Matthieu") // which should also get updated
|
||||||
void shouldReplaceDeceasedPartnerByCommunityOfHeirs() {
|
void shouldReplaceDeceasedPartnerByCommunityOfHeirs() {
|
||||||
new ReplaceDeceasedPartnerWithCommunityOfHeirs(scenarioTest)
|
new ReplaceDeceasedPartnerWithCommunityOfHeirs(scenarioTest)
|
||||||
.given("partnerNumber", "P-31011")
|
.given("partnerNumber", "P-31011")
|
||||||
|
@ -0,0 +1,45 @@
|
|||||||
|
package net.hostsharing.hsadminng.hs.office.scenarios.debitor;
|
||||||
|
|
||||||
|
import net.hostsharing.hsadminng.hs.scenarios.ScenarioTest;
|
||||||
|
import net.hostsharing.hsadminng.hs.scenarios.UseCase;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
|
import static io.restassured.http.ContentType.JSON;
|
||||||
|
import static org.springframework.http.HttpStatus.CREATED;
|
||||||
|
|
||||||
|
public class CreateSelfDebitorForPartnerWithIdenticalContactData
|
||||||
|
extends UseCase<CreateSelfDebitorForPartnerWithIdenticalContactData> {
|
||||||
|
|
||||||
|
public CreateSelfDebitorForPartnerWithIdenticalContactData(final ScenarioTest testSuite) {
|
||||||
|
super(testSuite);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected HttpResponse run() {
|
||||||
|
withTitle("Determine Partner-Person UUID", () ->
|
||||||
|
httpGet("/api/hs/office/partners/" + uriEncoded("%{partnerNumber}"))
|
||||||
|
.reportWithResponse().expecting(HttpStatus.OK).expecting(JSON)
|
||||||
|
.extractUuidAlias("partnerRel.holder.uuid", "partnerPersonUuid")
|
||||||
|
.extractUuidAlias("partnerRel.contact.uuid", "partnerContactUuid")
|
||||||
|
);
|
||||||
|
|
||||||
|
return httpPost("/api/hs/office/debitors", usingJsonBody("""
|
||||||
|
{
|
||||||
|
"debitorRel": {
|
||||||
|
"anchor.uuid": ${partnerPersonUuid},
|
||||||
|
"holder.uuid": ${partnerPersonUuid},
|
||||||
|
"contact.uuid": ${partnerContactUuid}
|
||||||
|
},
|
||||||
|
"debitorNumberSuffix": ${debitorNumberSuffix},
|
||||||
|
"billable": ${billable},
|
||||||
|
"vatId": ${vatId???},
|
||||||
|
"vatCountryCode": ${vatCountryCode???},
|
||||||
|
"vatBusiness": ${vatBusiness},
|
||||||
|
"vatReverseCharge": ${vatReverseCharge},
|
||||||
|
"defaultPrefix": ${defaultPrefix}
|
||||||
|
}
|
||||||
|
"""))
|
||||||
|
.expecting(CREATED).expecting(JSON);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user