diff --git a/client/custom/res/templates/c-vmh-erstgespraech/fields/beruecksichtigte-personen/detail.tpl b/client/custom/res/templates/c-vmh-erstgespraech/fields/beruecksichtigte-personen/detail.tpl
new file mode 100644
index 00000000..9d5e3e9b
--- /dev/null
+++ b/client/custom/res/templates/c-vmh-erstgespraech/fields/beruecksichtigte-personen/detail.tpl
@@ -0,0 +1,3 @@
+
+ {{value}}
+
diff --git a/client/custom/res/templates/c-vmh-erstgespraech/fields/beruecksichtigte-personen/edit.tpl b/client/custom/res/templates/c-vmh-erstgespraech/fields/beruecksichtigte-personen/edit.tpl
new file mode 100644
index 00000000..9d5e3e9b
--- /dev/null
+++ b/client/custom/res/templates/c-vmh-erstgespraech/fields/beruecksichtigte-personen/edit.tpl
@@ -0,0 +1,3 @@
+
+ {{value}}
+
diff --git a/client/custom/src/views/c-vmh-erstgespraech/fields/beruecksichtigte-personen.js b/client/custom/src/views/c-vmh-erstgespraech/fields/beruecksichtigte-personen.js
new file mode 100644
index 00000000..3de091c2
--- /dev/null
+++ b/client/custom/src/views/c-vmh-erstgespraech/fields/beruecksichtigte-personen.js
@@ -0,0 +1,51 @@
+define('custom:views/c-vmh-erstgespraech/fields/beruecksichtigte-personen', ['views/fields/text'], function (Dep) {
+
+ return Dep.extend({
+
+ detailTemplate: 'custom:c-vmh-erstgespraech/fields/beruecksichtigte-personen/detail',
+ editTemplate: 'custom:c-vmh-erstgespraech/fields/beruecksichtigte-personen/edit',
+
+ setup: function () {
+ Dep.prototype.setup.call(this);
+
+ this.listenTo(this.model, 'change:anzahlVermieter change:anzahlMieter change:anzahlSonstigeVolljhrigeBewohner', () => {
+ this.updateText();
+ });
+
+ // Initial update when model is synced
+ this.listenTo(this.model, 'sync', () => {
+ this.updateText();
+ });
+
+ // Update immediately if data already exists
+ if (this.model.id) {
+ this.updateText();
+ }
+ },
+
+ updateText: function () {
+ if (this.calculating) return;
+ this.calculating = true;
+
+ const vermieter = this.model.get('anzahlVermieter') || 0;
+ const mieter = this.model.get('anzahlMieter') || 0;
+ const sonstige = this.model.get('anzahlSonstigeVolljhrigeBewohner') || 0;
+
+ const text = `${vermieter} Vermieter, ${mieter} Mieter, ${sonstige} Dritte`;
+
+ this.model.set('beruecksichtigtePersonen', text, {silent: true});
+
+ this.calculating = false;
+
+ if (this.isRendered()) {
+ this.reRender();
+ }
+ },
+
+ data: function () {
+ const data = Dep.prototype.data.call(this);
+ data.value = this.model.get('beruecksichtigtePersonen') || '';
+ return data;
+ }
+ });
+});
diff --git a/client/custom/src/views/c-vmh-erstgespraech/fields/rvg-calculated.js b/client/custom/src/views/c-vmh-erstgespraech/fields/rvg-calculated.js
index 3bbf7aa8..f093dfb2 100644
--- a/client/custom/src/views/c-vmh-erstgespraech/fields/rvg-calculated.js
+++ b/client/custom/src/views/c-vmh-erstgespraech/fields/rvg-calculated.js
@@ -13,8 +13,13 @@ define('custom:views/c-vmh-erstgespraech/fields/rvg-calculated', [
// Listen to changes on relevant fields (combined listener)
this.listenTo(this.model, 'change:streitwert change:anzahlVermieter change:anzahlMieter change:anzahlSonstigeVolljhrigeBewohner change:ustSatz', this.calculate.bind(this));
- // Initial calculation
- this.calculate();
+ // Initial calculation when model is synced
+ this.listenTo(this.model, 'sync', this.calculate.bind(this));
+
+ // Immediate calculation if data already exists
+ if (this.model.id) {
+ this.calculate();
+ }
},
calculate: function () {
diff --git a/custom/Espo/Custom/Resources/i18n/de_DE/CVmhErstgespraech.json b/custom/Espo/Custom/Resources/i18n/de_DE/CVmhErstgespraech.json
index 5cac2368..430c0b24 100644
--- a/custom/Espo/Custom/Resources/i18n/de_DE/CVmhErstgespraech.json
+++ b/custom/Espo/Custom/Resources/i18n/de_DE/CVmhErstgespraech.json
@@ -63,6 +63,7 @@
"ustSatz": "USt-Satz",
"aussergerichtlicheGebuehren": "Außergerichtliche Gebühren",
"kostenRaeumungsantrag": "Kosten Räumungsantrag",
+ "beruecksichtigtePersonen": "Berücksichtigte Personen",
"gerichtskosten1Instanz": "GK-Kosten I. Inst.",
"anwaltskostenKlaeger1Instanz": "RA-Kosten Kläger I. Inst.",
"vorzusch1Instanz": "Vorauszuschießende Kosten I. Inst.",
@@ -96,7 +97,8 @@
"erstberaterEinschtzungDISGTyp": "Dominant = Schnelles Tempo, fordernder Ton, Fokus auf Ergebnisse.\\n\\nInitiativ = Hohe Sprechgeschwindigkeit, emotionale Sprache, sucht Bestätigung.\\n\\nStetig = Langsames Tempo, zögernde Pausen, risikoscheu.\\n\\nGewissenhaft = Präzise Formulierungen, sucht Daten, skeptisch.",
"auergerichtlicheGesetzlicheGebhren": "Die gesetzlichen Gebühren für eine außergerichtliche Tätigkeit",
"kndigungsfristMietverhltnis": "Zeitpunkt zu dem das Mietverhältnis beendet wurde. Bei mehreren Fristen (bspw. fristlose und fristgerechte Kündigung) frühester Zeitpunt.",
- "nchsterAnruf": "Nächster Anruf nicht vor"
+ "nchsterAnruf": "Nächster Anruf nicht vor",
+ "kostenKndigungsservice": "Individuell vereinbarte Pauschale für außergerichtliche Kündigung."
},
"options": {
"status": {
diff --git a/custom/Espo/Custom/Resources/layouts/CVmhErstgespraech/detail.json b/custom/Espo/Custom/Resources/layouts/CVmhErstgespraech/detail.json
index 5a90d201..60e9eb09 100644
--- a/custom/Espo/Custom/Resources/layouts/CVmhErstgespraech/detail.json
+++ b/custom/Espo/Custom/Resources/layouts/CVmhErstgespraech/detail.json
@@ -154,13 +154,16 @@
"name": "streitwert"
},
{
- "name": "kostenKndigungsservice"
+ "name": "beruecksichtigtePersonen"
},
{
"name": "ustSatz"
}
],
[
+ {
+ "name": "kostenKndigungsservice"
+ },
{
"name": "aussergerichtlicheGebuehren"
},
@@ -178,18 +181,20 @@
{
"name": "vorzusch1Instanz"
}
- ],
- [
- {
- "name": "vergleich1InstanzGk"
- },
- {
- "name": "vergleich1InstanzAnwK"
- },
- {
- "name": "vergleich1InstanzSumme"
- }
- ],
+ ]
+ ],
+ "dynamicLogicVisible": null,
+ "style": "primary",
+ "dynamicLogicStyled": null,
+ "tabBreak": false,
+ "tabLabel": null,
+ "hidden": false,
+ "noteText": "Die Gebühren werden automatisch nach RVG 2025 berechnet basierend auf Streitwert, Personenanzahl und USt-Satz.",
+ "noteStyle": "danger",
+ "customLabel": "Gebührenberechnung"
+ },
+ {
+ "rows": [
[
{
"name": "saeumnis1InstanzGk"
@@ -208,9 +213,33 @@
"tabBreak": false,
"tabLabel": null,
"hidden": false,
- "noteText": "Die Gebühren werden automatisch nach RVG 2025 berechnet basierend auf Streitwert, Personenanzahl und USt-Satz.",
+ "noteText": "Säumnisszenario: Der Beklagte erscheint nicht zum Termin. Terminsgebühr wird auf 0,5 reduziert, Gerichtskosten bleiben bei 3,0.",
"noteStyle": "success",
- "customLabel": "Gebührenberechnung"
+ "customLabel": "Säumnisszenario I. Inst."
+ },
+ {
+ "rows": [
+ [
+ {
+ "name": "vergleich1InstanzGk"
+ },
+ {
+ "name": "vergleich1InstanzAnwK"
+ },
+ {
+ "name": "vergleich1InstanzSumme"
+ }
+ ]
+ ],
+ "dynamicLogicVisible": null,
+ "style": "primary",
+ "dynamicLogicStyled": null,
+ "tabBreak": false,
+ "tabLabel": null,
+ "hidden": false,
+ "noteText": "Vergleichsszenario: Einigung vor Urteil. Vergleichsgebühr 1,0 kommt zusätzlich zur Terminsgebühr hinzu, Gerichtskosten nur 1,0 statt 3,0.",
+ "noteStyle": "success",
+ "customLabel": "Vergleichsszenario I. Inst."
},
{
"rows": [
diff --git a/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhErstgespraech.json b/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhErstgespraech.json
index 14671630..2c97d66f 100644
--- a/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhErstgespraech.json
+++ b/custom/Espo/Custom/Resources/metadata/entityDefs/CVmhErstgespraech.json
@@ -445,6 +445,12 @@
"decimal": true,
"isCustom": true
},
+ "beruecksichtigtePersonen": {
+ "type": "text",
+ "readOnly": true,
+ "view": "custom:views/c-vmh-erstgespraech/fields/beruecksichtigte-personen",
+ "isCustom": true
+ },
"gerichtskosten1Instanz": {
"type": "currency",
"readOnly": true,
diff --git a/data/config.php b/data/config.php
index 60136690..8ed4efd5 100644
--- a/data/config.php
+++ b/data/config.php
@@ -349,8 +349,8 @@ return [
0 => 'youtube.com',
1 => 'google.com'
],
- 'cacheTimestamp' => 1769195678,
- 'microtime' => 1769195678.710132,
+ 'cacheTimestamp' => 1769197109,
+ 'microtime' => 1769197109.316755,
'siteUrl' => 'https://crm.bitbylaw.com',
'fullTextSearchMinLength' => 4,
'appTimestamp' => 1768843902,