SEPA-Mandatsauswahlen als Wörterbücher pflegen #183
This commit is contained in:
@@ -21,6 +21,9 @@ import { decrypt, encrypt } from "../../utils/crypt";
|
||||
|
||||
const PORTAL_ALLOWED_RESOURCES = new Set(["customers", "contracts", "createddocuments", "contracttypes"])
|
||||
const PORTAL_VISIBLE_DOCUMENT_TYPES = ["invoices", "advanceInvoices", "cancellationInvoices"]
|
||||
const OUTGOING_SEPA_MANDATE_STATUSES = new Set(["Entwurf", "Aktiv", "Widerrufen", "Abgelaufen"])
|
||||
const OUTGOING_SEPA_MANDATE_TYPES = new Set(["CORE", "B2B"])
|
||||
const OUTGOING_SEPA_SEQUENCE_TYPES = new Set(["RCUR", "OOFF", "FRST", "FNAL"])
|
||||
|
||||
// -------------------------------------------------------------
|
||||
// SQL Suche auf mehreren Feldern (Haupttabelle + Relationen)
|
||||
@@ -378,6 +381,21 @@ async function validateOutgoingSepaMandatePayload(
|
||||
return "Kunde und Bankverbindung sind Pflichtfelder."
|
||||
}
|
||||
|
||||
const status = payload.status ?? existing?.status ?? "Entwurf"
|
||||
if (!OUTGOING_SEPA_MANDATE_STATUSES.has(status)) {
|
||||
return "Ungültiger Mandatsstatus."
|
||||
}
|
||||
|
||||
const mandateType = payload.mandateType ?? existing?.mandateType ?? "CORE"
|
||||
if (!OUTGOING_SEPA_MANDATE_TYPES.has(mandateType)) {
|
||||
return "Ungültiger Mandatstyp."
|
||||
}
|
||||
|
||||
const sequenceType = payload.sequenceType ?? existing?.sequenceType ?? "RCUR"
|
||||
if (!OUTGOING_SEPA_SEQUENCE_TYPES.has(sequenceType)) {
|
||||
return "Ungültige Mandatssequenz."
|
||||
}
|
||||
|
||||
const [customer] = await server.db
|
||||
.select()
|
||||
.from(customers)
|
||||
|
||||
@@ -56,6 +56,18 @@ import outgoingSepaMandate from "~/components/columnRenderings/outgoingSepaManda
|
||||
// @ts-ignore
|
||||
export const useDataStore = defineStore('data', () => {
|
||||
|
||||
const outgoingSepaMandateTypeOptions = [
|
||||
{ key: "CORE", label: "Basislastschrift (CORE)" },
|
||||
{ key: "B2B", label: "Firmenlastschrift (B2B)" }
|
||||
]
|
||||
|
||||
const outgoingSepaSequenceTypeOptions = [
|
||||
{ key: "RCUR", label: "Wiederkehrend (RCUR)" },
|
||||
{ key: "OOFF", label: "Einmalig (OOFF)" },
|
||||
{ key: "FRST", label: "Erstlastschrift (FRST)" },
|
||||
{ key: "FNAL", label: "Letztlastschrift (FNAL)" }
|
||||
]
|
||||
|
||||
|
||||
|
||||
const dataTypes = {
|
||||
@@ -1224,11 +1236,9 @@ export const useDataStore = defineStore('data', () => {
|
||||
required: true,
|
||||
defaultValue: "CORE",
|
||||
inputType: "select",
|
||||
selectValueAttribute: "label",
|
||||
selectManualOptions: [
|
||||
{ label: "CORE" },
|
||||
{ label: "B2B" }
|
||||
],
|
||||
selectValueAttribute: "key",
|
||||
selectOptionAttribute: "label",
|
||||
selectManualOptions: outgoingSepaMandateTypeOptions,
|
||||
inputColumn: "Mandat",
|
||||
sortable: true
|
||||
},
|
||||
@@ -1238,13 +1248,9 @@ export const useDataStore = defineStore('data', () => {
|
||||
required: true,
|
||||
defaultValue: "RCUR",
|
||||
inputType: "select",
|
||||
selectValueAttribute: "label",
|
||||
selectManualOptions: [
|
||||
{ label: "RCUR" },
|
||||
{ label: "OOFF" },
|
||||
{ label: "FRST" },
|
||||
{ label: "FNAL" }
|
||||
],
|
||||
selectValueAttribute: "key",
|
||||
selectOptionAttribute: "label",
|
||||
selectManualOptions: outgoingSepaSequenceTypeOptions,
|
||||
inputColumn: "Mandat",
|
||||
sortable: true
|
||||
},
|
||||
@@ -2287,7 +2293,7 @@ export const useDataStore = defineStore('data', () => {
|
||||
isArchivable: true,
|
||||
label: "Dokumente",
|
||||
labelSingle: "Dokument",
|
||||
selectWithInformation: "*, files(*), statementallocations(*)",
|
||||
selectWithInformation: "*, files(*), statementallocations(*), outgoingsepamandate(*)",
|
||||
filters: [
|
||||
{
|
||||
name: "Archivierte ausblenden",
|
||||
@@ -3737,5 +3743,7 @@ export const useDataStore = defineStore('data', () => {
|
||||
return {
|
||||
dataTypes,
|
||||
documentTypesForCreation,
|
||||
outgoingSepaMandateTypeOptions,
|
||||
outgoingSepaSequenceTypeOptions,
|
||||
}
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user