Skip to main content

Gentable

Das Gentable kann über ein "Gentable"-Objekt realtiv einfach ausgelesen und neu geschrieben werden.

var docFile = context.file;
var gentable = new Gentable(docFile);

/* Erstellt ein Array aus Zeilen-Objekten *
 * Zahlen, Datumswerte und Boolsche Werte haben bereits das passende Format */
if( gentable.readFromField()===false || gentable.Result===false ){
  util.log(Gentable.Log); /* Bei Fehlern kann das Log ausgegeben werden */
  context.errorMessage = gentable.Error; /* Fehlermeldung in Client-Sprache */
  return -1;
}

/* Beispiel um Zeilen zu iterieren */
for( var row=0; row<gentable.Rows.length; row++ ){
  var net = gentable.Rows[row]["Net"]; /* Netto aus der Zeile ausgeben */
  gentable.Rows[row]["Gross"] = net; /* Brutto auf den Netto-Wert setzen */
}

/* Summe aus Spaltenwerten bilden. */
var sumNet = gentable.sumLineAmounts("Net");

/* Gentable in die Datenbank-Tabelle 'Invoice_Posting_Pos' schreiben.
 * Die eindeutige Zeilen ID wird zurück in die Gentable-Spalte "ID" geschrieben.
 * Hierüber wird beim nächsten Aufruf ein Update ausgeführt. */
gentable.insertIntoDB();

/* Gentable-String in das Feld 'Gentable' schreiben.
 * Über den Parameter kann optional direkt ein sync() auf das DocFile-Objekt ausgeführt werden. */
var syncFile = true;
gentable.createGentableStr(syncFile);

 

Gentable User-Exits

Beim Speichern und bei Abschluss einer Aktion werden bereits User-Exit-Funktionen zur Verfügung gestellt. Wenn in den Funktionen Positionsfelder geprüft werden sollen oder wenn Anpassungen am Gentable vorgenommen werden sollen, dann muss das Gentable erneut ausgelesen werden und nach Abschluss muss der Gentable-String erneut generiert werden und die Daten müssen erneut in die Datenbank geschrieben werden.

Beim Speichern und beim Abschluss einer Workflow-Aktion wurden 2 zusätzliche User-Exit Funktionen explizit für das Gentable an der Version XX.XXX hinzugefügt.  Die anderen beiden Funktionen wurden bereits im User-Exit Skript "DEXPRO__UserExit_GentableAdd" ausgeliefert. Die anderen können hier optional hinzugefügt werden.

/** Wird bei der Erstellung der initialen Gentable-Zeile aufgerufen **/
Gentable.prototype.createInitialRow = function (){
}

/** Wird am Ende des Skripts beim Laden der offenen Bestellpositionen ausgeführt **/
Gentable.prototype.adjustLoadedOrderPositions = function (){
}

/** User-Exit beim Speichern einer Rechnungs-Akte **/
Gentable.prototype.ue_InvoiceOnSave = function (){
this.Result = false;
this.Error = "Fehlermeldung";
var docFile = this.DocFile;
for( var r=0; r<this.Rows.length; r++){
var row = this.Rows[r];
this.Rows[r]["Net"] = 0;
}
}

/** User-Exit bei Abschluss einer Workflow-Aktion **/
Gentable.prototype.ue_OnActionEnd = function (){
this.Result = false;
this.Error = "Fehlermeldung";
var docFile = this.DocFile;
for( var r=0; r<this.Rows.length; r++){
var row = this.Rows[r];
this.Rows[r]["Net"] = 0;
}
}