Add 'beruecksichtigtePersonen' field and implement dynamic text updates in CVmhErstgespraech entity; enhance templates and localization

This commit is contained in:
2026-01-23 20:43:24 +01:00
parent 56271ca05a
commit 8700e4cd42
8 changed files with 119 additions and 20 deletions

View File

@@ -0,0 +1,3 @@
<div class="field" data-name="{{name}}">
<span class="text-muted">{{value}}</span>
</div>

View File

@@ -0,0 +1,3 @@
<div class="field" data-name="{{name}}">
<span class="text-muted">{{value}}</span>
</div>

View File

@@ -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;
}
});
});

View File

@@ -13,8 +13,13 @@ define('custom:views/c-vmh-erstgespraech/fields/rvg-calculated', [
// Listen to changes on relevant fields (combined listener) // 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)); this.listenTo(this.model, 'change:streitwert change:anzahlVermieter change:anzahlMieter change:anzahlSonstigeVolljhrigeBewohner change:ustSatz', this.calculate.bind(this));
// Initial calculation // 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(); this.calculate();
}
}, },
calculate: function () { calculate: function () {

View File

@@ -63,6 +63,7 @@
"ustSatz": "USt-Satz", "ustSatz": "USt-Satz",
"aussergerichtlicheGebuehren": "Außergerichtliche Gebühren", "aussergerichtlicheGebuehren": "Außergerichtliche Gebühren",
"kostenRaeumungsantrag": "Kosten Räumungsantrag", "kostenRaeumungsantrag": "Kosten Räumungsantrag",
"beruecksichtigtePersonen": "Berücksichtigte Personen",
"gerichtskosten1Instanz": "GK-Kosten I. Inst.", "gerichtskosten1Instanz": "GK-Kosten I. Inst.",
"anwaltskostenKlaeger1Instanz": "RA-Kosten Kläger I. Inst.", "anwaltskostenKlaeger1Instanz": "RA-Kosten Kläger I. Inst.",
"vorzusch1Instanz": "Vorauszuschießende Kosten 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.", "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", "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.", "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": { "options": {
"status": { "status": {

View File

@@ -154,13 +154,16 @@
"name": "streitwert" "name": "streitwert"
}, },
{ {
"name": "kostenKndigungsservice" "name": "beruecksichtigtePersonen"
}, },
{ {
"name": "ustSatz" "name": "ustSatz"
} }
], ],
[ [
{
"name": "kostenKndigungsservice"
},
{ {
"name": "aussergerichtlicheGebuehren" "name": "aussergerichtlicheGebuehren"
}, },
@@ -178,18 +181,20 @@
{ {
"name": "vorzusch1Instanz" "name": "vorzusch1Instanz"
} }
]
], ],
[ "dynamicLogicVisible": null,
{ "style": "primary",
"name": "vergleich1InstanzGk" "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"
}, },
{ {
"name": "vergleich1InstanzAnwK" "rows": [
},
{
"name": "vergleich1InstanzSumme"
}
],
[ [
{ {
"name": "saeumnis1InstanzGk" "name": "saeumnis1InstanzGk"
@@ -208,9 +213,33 @@
"tabBreak": false, "tabBreak": false,
"tabLabel": null, "tabLabel": null,
"hidden": false, "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", "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": [ "rows": [

View File

@@ -445,6 +445,12 @@
"decimal": true, "decimal": true,
"isCustom": true "isCustom": true
}, },
"beruecksichtigtePersonen": {
"type": "text",
"readOnly": true,
"view": "custom:views/c-vmh-erstgespraech/fields/beruecksichtigte-personen",
"isCustom": true
},
"gerichtskosten1Instanz": { "gerichtskosten1Instanz": {
"type": "currency", "type": "currency",
"readOnly": true, "readOnly": true,

View File

@@ -349,8 +349,8 @@ return [
0 => 'youtube.com', 0 => 'youtube.com',
1 => 'google.com' 1 => 'google.com'
], ],
'cacheTimestamp' => 1769195678, 'cacheTimestamp' => 1769197109,
'microtime' => 1769195678.710132, 'microtime' => 1769197109.316755,
'siteUrl' => 'https://crm.bitbylaw.com', 'siteUrl' => 'https://crm.bitbylaw.com',
'fullTextSearchMinLength' => 4, 'fullTextSearchMinLength' => 4,
'appTimestamp' => 1768843902, 'appTimestamp' => 1768843902,