hitobito / hitobito_sac_cas

A hitobito wagon defining the organization hierarchy and additional features for SAC/CAS
Other
3 stars 2 forks source link

EVENTS: Kursrechnung an Abacus übermitteln #1008

Open codez opened 1 week ago

codez commented 1 week ago

blocked by #1002

In diesem Ticket wird die technische Grundlage gelegt, um Kursrechnungen an Abacus zu schicken.

Course Invoice

Analog zur MembershipInvoice braucht es eine Klasse Invoices::Abacus::CourseInvoice, welche eine Kursrechnung für Abacus vorbereitet.

Zur Initialisierung der Klasse wird eine Event::Participation eines Kurses übergeben.

Eine Kursrechnung hat immer nur eine Position (Invoices::Abacus::InvoicePosition):

Als additional_user_fields werden folgende Felder gesetzt:

Die Methode invoice? gibt false zurück, falls der Betrag der Position null ist.

CreateCourseInvoiceJob

Der bestehende Invoices::Abacus::CreateInvoiceJob erhält zwei neue Subklassen: CreateMembershipInvoiceJob und CreateCourseInvoiceJob. Die neue Basisklasse nimmt im initialize nur noch das Argument external_invoice und erhält eine leere Template Methode invoice_data, welche überall anstelle von membership_invoice aufgerufen wird. In CreateMembershipInvoiceJob entspricht die Implementation von invoice_data der jetztigen membership_invoice Methode. Die assign_error Methode wird in der Basisklasse ebenfalls vereinfacht, eine Methode invoice_error_key extrahiert, welche in CreateMembershipInvoiceJob mit der jetzigen Implementation überschrieben wird. Bisherige Verwendungen von CreateInvoiceJob müssen auf CreateMembershipInvoiceJob umgestellt werden.

Der neue CreateCourseInvoiceJob erstellt in invoice_data eine Instanz von Invoices::Abacus::CourseInvoice mit der Teilnahme aus dem external_invoice.link. Der restliche Ablauf bleibt identisch.

ExternalInvoice::Course

Auf der Klasse ExternalInvoice::Course wird eine klassenseitige Methode invoice_participation(participation) erstellt, welche folgendes macht:

Falls der Preis auf der Participation leer ist, wird keine External Invoice erzeugt und auch kein Job enqueued.

ToDo

tobiasstern commented 1 week ago

Etwas was glaube ich bei meiner Besprechung mit Pascal vergessen ging ist der Anzeige-Titel in der Rechnungsübersicht. Dort werden ja aktuell die Mitgliedschaftsrechnungen so angezeigt (vgl. Bild): image

Hat Pascal in diesem Ticket hier spezifiziert, wie der Titel sein soll für Kursrechnungen?

Falls nicht bitte wie folgt umsetzen: Titel: {Kursname} ({Kursnummer}) Beispiel: "Lawinen Ski + Snowboard (2025-0524)"