Compare commits
2 Commits
9feef02a17
...
4fb0a270da
Author | SHA1 | Date | |
---|---|---|---|
|
4fb0a270da | ||
|
a8de7029e9 |
76
doc/business-glossary-de.md
Normal file
76
doc/business-glossary-de.md
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
### hsadminNg fachliches Glossar
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Currently, this business glossary is only available in German because in many cases,
|
||||||
|
the German terms are important for comprehensibility for those using this software.
|
||||||
|
-->
|
||||||
|
|
||||||
|
Dieses ist eine Sammlung von Fachbegriffen, die in diesem Projekt benutzt werden.
|
||||||
|
Ebenfalls aufgenommen sind technische Begriffe, die für Benutzer für das Verständnis der Schnittstellen nötig sind.
|
||||||
|
|
||||||
|
Falls etwas fehlt, bitte Bescheid geben.
|
||||||
|
|
||||||
|
|
||||||
|
#### Partner
|
||||||
|
|
||||||
|
In diesem System ist ein _Partner_ grundsätzlich jeglicher Geschäftspartner der _Hostsharing eG_.
|
||||||
|
Dies können grundsätzlich Kunden, siehe [Debitor](#Debitor), wie Lieferanten sein.
|
||||||
|
Derzeit sind aber nur Debitoren implementiert.
|
||||||
|
|
||||||
|
Des Weiteren gibt es für jeden _Partner_ eine fünfstellige Partnernummer mit dem Prefix 'P-' (z.B. `P-123454`)
|
||||||
|
sowie Zusatzinformationen (z.B. Registergerichtnummer oder Geburtsdatum), die zur genauen Identifikation benötigt werden.
|
||||||
|
|
||||||
|
Für einen _Partner_ kann es gleichzeitig mehrere [Debitoren](#Debitor)
|
||||||
|
und zeitlich nacheinander mehrere [Mitgliedschaften](#Mitgliedschaft) geben.
|
||||||
|
|
||||||
|
Partner sind grundsätzlich als ist [Relation](#Relation) der Vertragsperson mit der Person _Hostsharing eG_ implementiert.
|
||||||
|
|
||||||
|
|
||||||
|
#### Ex-Partner
|
||||||
|
|
||||||
|
Ex-Partner bilden [Personen](#Person) ab, die vormals [Partner](#Partner) waren.
|
||||||
|
Diese bleiben dadurch dem System
|
||||||
|
|
||||||
|
|
||||||
|
### Debitor
|
||||||
|
|
||||||
|
Ein `Debitor` ist quasi ein Rechnungsempfänger für einen [Partner](#Partner).
|
||||||
|
|
||||||
|
Für einen _Partner_ kann es gleichzeitig mehrere [Debitoren](#Debitor) geben,
|
||||||
|
z.B. für spezielle Projekte des Kunden oder verbundene Organisationen.
|
||||||
|
|
||||||
|
Des Weiteren gibt es für jeden _Partner_ eine fünfstellige Partnernummer mit dem Prefix 'P-' (z.B. `P-123454`)
|
||||||
|
sowie Zusatzinformationen (z.B. Registergerichtsnummer oder Geburtsdatum), die zur genauen Identifikation benötigt werden.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Debitoren sind grundsätzlich als ist [Relation](#Relation) der Vertragsperson mit der Person des Vertragspartners implementiert.
|
||||||
|
|
||||||
|
|
||||||
|
#### Representative (ehemals _contractual_)
|
||||||
|
|
||||||
|
Ein _Representative_ ist eine natürliche Person, die für eine nicht-natürliche Person vertretungsberechtigt ist.
|
||||||
|
|
||||||
|
Implementiert ist der _Representative_ als eine besondere Form der [Relation](#Relation) des
|
||||||
|
|
||||||
|
|
||||||
|
'VIP_CONTACT',
|
||||||
|
'OPERATIONS',
|
||||||
|
'SUBSCRIBER');
|
||||||
|
|
||||||
|
|
||||||
|
#### Relation (so eine Art Geschäftsrolle)
|
||||||
|
|
||||||
|
Eine _Relation_ ist eine Beziehung
|
||||||
|
|
||||||
|
Wir haben hier keinen Begriff mit 'Rolle' verwendet,
|
||||||
|
weil 'Role' (engl.) zu leicht mit der [RBAC-Rolle](#RBAC-Role) verwechselt werden könnte.
|
||||||
|
|
||||||
|
Die _Relation_ ist auch ein technisches Konzept und gehört nicht zur Domänensprache.
|
||||||
|
Dieses Konzept ist jedoch für das Verständnis der ([API](#API)) notwendig.
|
||||||
|
|
||||||
|
#### Anker
|
||||||
|
|
||||||
|
|
||||||
|
#### API (Application-Programming-Interface)
|
||||||
|
|
@ -143,6 +143,7 @@ public class HsOfficePartnerController implements HsOfficePartnersApi {
|
|||||||
|
|
||||||
private void optionallyCreateExPartnerRelation(final HsOfficePartnerEntity saved, final HsOfficeRelationRealEntity previousPartnerRel) {
|
private void optionallyCreateExPartnerRelation(final HsOfficePartnerEntity saved, final HsOfficeRelationRealEntity previousPartnerRel) {
|
||||||
if (!saved.getPartnerRel().getUuid().equals(previousPartnerRel.getUuid())) {
|
if (!saved.getPartnerRel().getUuid().equals(previousPartnerRel.getUuid())) {
|
||||||
|
// TODO.impl: we also need to use the new partner-person as the anchor
|
||||||
relationRepo.save(previousPartnerRel.toBuilder().uuid(null).type(EX_PARTNER).build());
|
relationRepo.save(previousPartnerRel.toBuilder().uuid(null).type(EX_PARTNER).build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -321,7 +321,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
|||||||
void shouldCreateMembershipForPartner() {
|
void shouldCreateMembershipForPartner() {
|
||||||
new CreateMembership(this)
|
new CreateMembership(this)
|
||||||
.given("partnerName", "Test AG")
|
.given("partnerName", "Test AG")
|
||||||
.given("memberNumberSuffix", "00")
|
.given("memberNumberSuffix", "00") // FIXME: move into CreateMembership
|
||||||
.given("validFrom", "2024-10-15")
|
.given("validFrom", "2024-10-15")
|
||||||
.given("newStatus", "ACTIVE")
|
.given("newStatus", "ACTIVE")
|
||||||
.given("membershipFeeBillable", "true")
|
.given("membershipFeeBillable", "true")
|
||||||
|
@ -286,7 +286,7 @@ public abstract class UseCase<T extends UseCase<?>> {
|
|||||||
|
|
||||||
public HttpResponse keep() {
|
public HttpResponse keep() {
|
||||||
final var alias = nextTitle != null ? nextTitle : resultAlias;
|
final var alias = nextTitle != null ? nextTitle : resultAlias;
|
||||||
// FIXME assertThat(alias).as("cannot keep result, no title or alias found for locationUuid: " + locationUuid).isNotNull();
|
assertThat(alias).as("cannot keep result, no title or alias found for locationUuid: " + locationUuid).isNotNull();
|
||||||
|
|
||||||
return keepAs(alias);
|
return keepAs(alias);
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package net.hostsharing.hsadminng.hs.office.scenarios.membership;
|
package net.hostsharing.hsadminng.hs.office.scenarios.membership;
|
||||||
|
|
||||||
import io.restassured.http.ContentType;
|
import io.restassured.http.ContentType;
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.UseCase;
|
|
||||||
import net.hostsharing.hsadminng.hs.office.scenarios.ScenarioTest;
|
import net.hostsharing.hsadminng.hs.office.scenarios.ScenarioTest;
|
||||||
|
import net.hostsharing.hsadminng.hs.office.scenarios.UseCase;
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
|
|
||||||
import static io.restassured.http.ContentType.JSON;
|
import static io.restassured.http.ContentType.JSON;
|
||||||
@ -16,11 +16,17 @@ public class CreateMembership extends UseCase<CreateMembership> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected HttpResponse run() {
|
protected HttpResponse run() {
|
||||||
// FIXME: httpGet "partner.uuid": ${Partner: Test AG}
|
|
||||||
|
obtain("Partner: %{partnerName}", () ->
|
||||||
|
httpGet("/api/hs/office/partners?name=&{partnerName}")
|
||||||
|
.expecting(OK).expecting(JSON),
|
||||||
|
response -> response.expectArrayElements(1).getFromBody("[0].uuid"),
|
||||||
|
"In production, data this query could result in multiple outputs. In that case, you have to find out which is the right one."
|
||||||
|
);
|
||||||
|
|
||||||
return httpPost("/api/hs/office/memberships", usingJsonBody("""
|
return httpPost("/api/hs/office/memberships", usingJsonBody("""
|
||||||
{
|
{
|
||||||
"partner.uuid": ${Partner: P-31010 - Test AG},
|
"partner.uuid": ${Partner: %{partnerName}},
|
||||||
"memberNumberSuffix": ${memberNumberSuffix},
|
"memberNumberSuffix": ${memberNumberSuffix},
|
||||||
"status": "ACTIVE",
|
"status": "ACTIVE",
|
||||||
"validFrom": ${validFrom},
|
"validFrom": ${validFrom},
|
||||||
|
@ -16,6 +16,8 @@ public class CreatePartner extends UseCase<CreatePartner> {
|
|||||||
|
|
||||||
public CreatePartner(final ScenarioTest testSuite) {
|
public CreatePartner(final ScenarioTest testSuite) {
|
||||||
super(testSuite);
|
super(testSuite);
|
||||||
|
|
||||||
|
// FIXME: Anmerkung, dass alle Partner Kunden sind
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
Reference in New Issue
Block a user