Ausgehende SEPA-Mandate einführen #183

This commit is contained in:
2026-05-15 17:47:11 +02:00
parent 683d073b6e
commit 44017a768b
19 changed files with 513 additions and 8 deletions

View File

@@ -50,6 +50,8 @@ import {useFunctions} from "~/composables/useFunctions.js";
import signDate from "~/components/columnRenderings/signDate.vue";
import sepaDate from "~/components/columnRenderings/sepaDate.vue";
import bankAccounts from "~/components/columnRenderings/bankAccounts.vue";
import bankAccount from "~/components/columnRenderings/bankAccount.vue";
import outgoingSepaMandate from "~/components/columnRenderings/outgoingSepaMandate.vue";
// @ts-ignore
export const useDataStore = defineStore('data', () => {
@@ -173,7 +175,7 @@ export const useDataStore = defineStore('data', () => {
numberRangeHolder: "customerNumber",
historyItemHolder: "customer",
sortColumn: "customerNumber",
selectWithInformation: "*, projects(*), plants(*), contracts(*), contacts(*), createddocuments(*, statementallocations(*)), files(*), events(*), customerinventoryitems(*), customerspaces(*)",
selectWithInformation: "*, projects(*), plants(*), contracts(*), outgoingsepamandates(*, bankaccount(*)), contacts(*), createddocuments(*, statementallocations(*)), files(*), events(*), customerinventoryitems(*), customerspaces(*)",
filters: [{
name: "Archivierte ausblenden",
default: true,
@@ -457,7 +459,7 @@ export const useDataStore = defineStore('data', () => {
inputColumn: "Allgemeines"
},*/
],
showTabs: [{label: 'Informationen'},{label: 'Ansprechpartner'},{label: 'Dateien'},{label: 'Ausgangsbelege'},{label: 'Projekte'},{label: 'Objekte'},{label: 'Termine'},{label: 'Verträge'},{label: 'Kundeninventar', key: 'customerinventoryitems'},{label: 'Kundenlagerplätze', key: 'customerspaces'},{label: 'Wiki'}]
showTabs: [{label: 'Informationen'},{label: 'Ansprechpartner'},{label: 'Dateien'},{label: 'Ausgangsbelege'},{label: 'Projekte'},{label: 'Objekte'},{label: 'Termine'},{label: 'Verträge'},{label: 'Ausgehende SEPA-Mandate', key: 'outgoingsepamandates', type: 'outgoingsepamandates'},{label: 'Kundeninventar', key: 'customerinventoryitems'},{label: 'Kundenlagerplätze', key: 'customerspaces'},{label: 'Wiki'}]
},
members: {
isArchivable: true,
@@ -822,7 +824,7 @@ export const useDataStore = defineStore('data', () => {
"Allgemeines",
"Abrechnung"
],
selectWithInformation: "*, customer(*), contracttype(*), files(*)",
selectWithInformation: "*, customer(*), contracttype(*), outgoingsepamandate(*, bankaccount(*)), files(*)",
templateColumns: [
{
key: 'contractNumber',
@@ -936,6 +938,22 @@ export const useDataStore = defineStore('data', () => {
{label:'Überweisung'}
],
inputColumn: "Abrechnung"
},{
key: 'outgoingsepamandate',
label: "SEPA-Mandat",
component: outgoingSepaMandate,
inputType: "select",
selectDataType: "outgoingsepamandates",
selectOptionAttribute: "reference",
selectSearchAttributes: ["reference"],
selectDataTypeFilter: function (i, item) {
const mandateCustomer = i.customer?.id || i.customer
return !item.customer || mandateCustomer === item.customer
},
showFunction: function (item) {
return item.paymentType === "Einzug"
},
inputColumn: "Abrechnung"
},{
key: "billingInterval",
label: "Abrechnungsintervall",
@@ -1129,6 +1147,145 @@ export const useDataStore = defineStore('data', () => {
],
showTabs: [{ label: "Informationen" }]
},
outgoingsepamandates: {
isArchivable: true,
label: "Ausgehende SEPA-Mandate",
labelSingle: "Ausgehendes SEPA-Mandat",
isStandardEntity: true,
redirect: true,
numberRangeHolder: "reference",
historyItemHolder: "outgoingsepamandate",
sortColumn: "reference",
selectWithInformation: "*, customer(*), bankaccount(*)",
filters: [{
name: "Archivierte ausblenden",
default: true,
"filterFunction": function (row) {
return !row.archived
}
}],
inputColumns: [
"Allgemeines",
"Mandat"
],
templateColumns: [
{
key: "reference",
label: "Mandatsreferenz",
title: true,
required: true,
inputIsNumberRange: true,
inputType: "text",
inputColumn: "Allgemeines",
sortable: true
},
{
key: "customer",
label: "Kunde",
component: customer,
required: true,
inputType: "select",
selectDataType: "customers",
selectOptionAttribute: "name",
selectSearchAttributes: ["name", "customerNumber"],
inputColumn: "Allgemeines",
sortable: true
},
{
key: "bankaccount",
label: "Bankverbindung",
component: bankAccount,
required: true,
inputType: "select",
selectDataType: "entitybankaccounts",
selectOptionAttribute: "displayLabel",
selectSearchAttributes: ["displayLabel", "iban", "bankName"],
inputColumn: "Mandat"
},
{
key: "status",
label: "Status",
required: true,
defaultValue: "Entwurf",
inputType: "select",
selectValueAttribute: "label",
selectManualOptions: [
{ label: "Entwurf" },
{ label: "Aktiv" },
{ label: "Widerrufen" },
{ label: "Abgelaufen" }
],
inputColumn: "Allgemeines",
sortable: true
},
{
key: "mandateType",
label: "Mandatstyp",
required: true,
defaultValue: "CORE",
inputType: "select",
selectValueAttribute: "label",
selectManualOptions: [
{ label: "CORE" },
{ label: "B2B" }
],
inputColumn: "Mandat",
sortable: true
},
{
key: "sequenceType",
label: "Sequenz",
required: true,
defaultValue: "RCUR",
inputType: "select",
selectValueAttribute: "label",
selectManualOptions: [
{ label: "RCUR" },
{ label: "OOFF" },
{ label: "FRST" },
{ label: "FNAL" }
],
inputColumn: "Mandat",
sortable: true
},
{
key: "signedAt",
label: "Unterschrieben am",
inputType: "date",
inputColumn: "Mandat",
sortable: true
},
{
key: "validFrom",
label: "Gültig ab",
inputType: "date",
inputColumn: "Mandat",
sortable: true
},
{
key: "validUntil",
label: "Gültig bis",
inputType: "date",
inputColumn: "Mandat",
sortable: true
},
{
key: "defaultMandate",
label: "Standardmandat",
inputType: "bool",
defaultValue: false,
inputColumn: "Allgemeines",
sortable: true
},
{
key: "notes",
label: "Notizen",
inputType: "textarea",
inputColumn: "Allgemeines"
}
],
showTabs: [{ label: "Informationen" }, { label: "Wiki" }]
},
absencerequests: {
isArchivable: true,
label: "Abwesenheiten",