Durchsuchbare Dokumentation aufrufen | Zurück zur Dokumentationsübersicht

Navigation: Dokumentationen agorum core > agorum core für Entwickler > agorum.composite.form


agorum.composite.form.element.splitList

Dieses Element splittet Positionen. Das Splitten von Positionen setzen Sie für Rechnungen und die Kontierung, etwa für die Zuweisungen von verschiedenen Kostenstellen für eine Rechnungsposition.

agorum.composite.form.element.splitList erbt alle grundlegenden Eigenschaften von element.

Beispiel: Oberfläche zum Aufteilen von Positionen

Oberfläche zum Aufteilen von Positionen

Positionen splitten

 

Skript zum Splitten von Positionen

let aguila = require('common/aguila');

let form = aguila.create({
  type: 'agorum.composite.form.basic',
  name: 'form',
  labelPosition: 'top',
  elements: [
    {
      type: 'agorum.composite.form.element.splitList',
      name: 'splitList',
      disableSplit: false,
      showRowDelete: true,
      showAppend: true,
      copyDiffValues: false,
      template: [
        // Es muss mindestens ein festes Feld geben, das pro Position eindeutig ist, etwa eine Positionsnummer
        {
          type: 'agorum.composite.form.element.text',
          label: 'Nummer',
          name: 'number',
          readOnly: true
        },
        {
          type: 'agorum.composite.form.element.text',
          label: 'Beschreibung',
          name: 'description',
          readOnly: true
        },
        {
          type: 'agorum.composite.form.element.number',
          label: 'Menge',
          name: 'quantity',
          // Der Wert dieser Spalte ergibt sich aus allen Summen der aufgesplitteten Werte dieser Spalte
          split: 'sum'
        },
        {
          type: 'agorum.composite.form.element.number',
          label: 'Einzelpreis',
          name: 'net_price',
          readOnly: true
        },
        {
          type: 'agorum.composite.form.element.number',
          label: 'Gesamtpreis',
          name: 'net_amount',
          readOnly: true,
          // Der Wert dieser Spalte ergibt sich aus allen Summen der aufgesplitteten Werte dieser Spalte
          split: 'sum'
        },
        {
          type: 'agorum.composite.form.element.text',
          label: 'Kostenstelle',
          name: 'cost_center',
          // Der Wert dieser Spalte soll pro aufgesplitteter Position unterschiedlich sein
          split: 'diff',
          validation: [
            {
              required: true
            }
          ]
        }
      ]
    }
  ]
});

// Konsole vom Browser aufrufen, um Werte zu sehen
form.on('valueChanged', value => {
  console.log('values', value);
});

// Manuelle Erstellung von Testdaten
// Wichtig ist, dass die Bezeichnungen wie number / description dem name der splitListe-Elementen entspricht
// Dadurch können die Werte den entsprechenden Spalten zugeordnet werden.
// Die Namensgebung ist frei und kann beliebig angepasst werden.
setImmediate(() => {
  form.set('splitList.value', [
    {
      number: '01',
      description: 'Position 1',
      quantity: 10,
      net_price: 100,
      net_amount: 1000
    },
    {
      number: '02',
      description: 'Position 2',
      quantity: 20,
      net_price: 50,
      net_amount: 1000
    }
  ]);
});


form;

Parameter

Alle Parameter in element gelten. Zusätzlich gelten folgende Parameter.

labelPosition

Wert Beschreibung
top Das Label ist über dem Feld.
left Das Label ist links vom Feld.

type

Definiert den type des Elements, etwa agorum.composite.form.element.text.


Beispiel

type: 'agorum.composite.form.element.text',

label

Definiert den Text / das Label vor dem Element.


Beispiel

label: 'Nummer',

name

Definiert die eindeutige Benennung des Elements.


Beispiel

name: 'number',

readOnly

Definiert optional, ob ein Element im Bearbeitungs- oder Ansichtsmodus ist.

Wert Beschreibung
false (Standard) Das System legt den Bearbeitungs- oder Ansichtsmodus über die umliegende form.

Das Element befindet sich im Bearbeitungsmodus, wenn keine form existiert.
true Das Element ist immer im Ansichtsmodus, unabhängig vom Zustand der umliegenden form.

split

Definiert optional, wie das System die Positionen aufteilt.

Wert Beschreibung
sum Teilt den Wert zwischen den Positionen anteilig auf.
  • Das System prüft automatisch, ob die eingetragenen Werte der gesplitteten Positionen der Gesamtsumme entsprechen, wenn es sich dabei um eine Zahl handelt.
  • Das System kopiert bei anderen Metadatentypen die ursprünglichen Einträge.
  • Bei fehlgeschlagener Validierung werden alle beteiligten Zellen des Split-Blocks als fehlerhaft markiert, da die Titelzelle unter Umständen readOnly ist und der Benutzer den Fehler nur in den aufgesplitteten Zeilen korrigieren kann.
split: 'sum'
sum
diff Die geteilten Positionen besitzen nach dem Splitten keinen Wert mehr, der Benutzer muss die unterschiedlichen Werte in der Bedienoberfläche manuell zuteilen.
split: 'diff'
diff
 

Parameter „split“

...  
  elements: [
    {
      type: 'agorum.composite.form.element.splitList',
      name: 'splitList',
      split: 'sum'
      template: [
        // Es muss mindestens ein festes Feld geben, das pro Position eindeutig ist, etwa eine Positionsnummer 
...
        {
          type: 'agorum.composite.form.element.number',
          label: 'Menge',
          name: 'quantity',
          // Der Wert dieser Spalte ergibt sich aus allen Summen der aufgesplitteten Werte dieser Spalte
          split: 'sum'
        },
...
Nicht teilbare Einträge

Das folgende Video zeigt eine ungewollte Zusammenführung der Positionen. Es wird dieselbe Beschreibung Konferenzraum klein für zwei verschiedene Positionen gewählt. Dies führt dazu, dass das System die Mengen und Preise zusammenrechnet. Alle Angaben verschmelzen:

validation

Definiert die Validierung für das Element.


Beispiel

  validation: [
            {
              required: true
            }
          ]
validation

disableSplit

Wert Beschreibung
true Blendet die Schaltflächen zum Splitten und Zusammenführen aus.
false (Standard) Blendet die Schaltflächen zum Splitten und Zusammenführen ein.

copyDiffValues

Wert Beschreibung
true Übernimmt beim Splitten die Werte der vorherigen Zeile für alle als diff markierten Felder.
false (Standard) Als diff markierte Felder sind beim Splitten leer.

showRowDelete

Wert Beschreibung
true Blendet die Schaltfläche zum Löschen im Header der jeweiligen Position ein.
false (Standard) Blendet die Schaltfläche zum Löschen im Header der jeweiligen Position aus.

showAppend

Wert Beschreibung
true Blendet die Schaltfläche zum Hinzufügen im Header der Liste ein.
false (Standard) Blendet die Schaltfläche zum Hinzufügen im Header der Liste aus.

splitOnly

Markiert eine Spalte so, dass zwar eine Aufteilung (split: 'sum') möglich ist, jedoch keine Änderung des aufsummierten Werts durch den Benutzer erlaubt wird. Der Gesamtwert bleibt somit unverändert, während die Aufteilung auf die gesplitteten Zeilen erfolgen kann.

Wert Beschreibung
true Der aufsummierte Wert der Spalte kann nicht geändert werden. Nur die Aufteilung auf die gesplitteten Zeilen ist möglich.
false (Standard) Der aufsummierte Wert der Spalte kann vom Benutzer geändert werden.

Hinweis: Verwenden Sie splitOnly zusammen mit split: 'sum'. Ohne split: 'sum' hat splitOnly keine Wirkung.

Beispiel für splitOnly 

Dieses Beispiel zeigt, wie der Wert in der Kopfzeile in der 3. Spalte mit dem Betrag nicht geändert werden kann, sondern nur die aufgesplitteten Werte:

let aguila = require('common/aguila');

let widget = aguila.create({
  type: 'agorum.composite.form.basic',
  elements: [
    {
      name: 'status',
      type: 'agorum.composite.form.element.text',
      readOnly: true,
    },
    {
      name: 'list',
      type: 'agorum.composite.form.element.splitList',
      width: 1000,
      height: 600,
      showAppend: true,
      showRowDelete: true,
      showRowMove: true,
      // disabled: true,
      // readOnly: true,
      template: [
        {
          name: 'c1',
          type: 'agorum.composite.form.element.text',
        },
        {
          name: 'c2',
          type: 'agorum.composite.form.element.number',
          split: 'sum',
          disabled: true,
        },
        {
          name: 'c3',
          type: 'agorum.composite.form.element.number',
          split: 'sum',
          // readOnly: true,
          splitOnly: true,
        },
      ],
    },
  ],
});

widget.value = {
  list: [
    {
      c1: 'test1',
      c2: 10,
      c3: 100,
    },
    {
      c1: 'test1',
      c2: 10,
      c3: 100,
    },
    {
      c1: 'test2',
      c2: 20,
      c3: 200,
    },
    {
      c1: 'test3',
      c2: 30,
      c3: 300,
    },
  ],
};

let status = () => {
  widget.set('status.value', 'valid: ' + widget.valid);
};

status();
widget.on('validChanged', status);

widget.on('itemAppended', data => console.log('itemAppended', data));

widget;

 

splitOnly: nur Ändern der gesplitteten Werte möglich

 

Weitere Parameter

Sie können weitere Parameter​​​​​ in das Skript einfügen (siehe element.list).

Events

Alle Events in agorum.composite.form - element - Grundlegende Eigenschaften und in agorum.composite.form - element - list gelten.

itemSplitted

Löst aus, wenn ein Benutzer eine Zeile splittet.


Beispiel

Das System übergibt als Parameter diese Struktur:

{
  index: 0,            // Position in der Liste (bezogen auf alle Werte)
  item: { ... }        // Der neue Wert, der durch das Splitten erzeugt wurde (row)
}