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

An einigen Skriptstellen wurden User-Exit - Funktionen direkt auf das Gentable-Objekt hinzugefügt. Dadurch muss das Gentable nicht nochmals umständlich ausgelesen werden. Über "this" kann direkt auf das Gentable-Objekt zugegriffen werden.

Die Funktionen selber müssen keinen Rückgabewert zurückgeben. Wenn "this.Result" auf den boolschen Wert "false" gesetzt wird kann über "this.Error" eine Fehlermeldung mitgegeben 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
 * @since Invoice 1.0.200
 **/
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
 * @since Invoice 1.0.200
 **/
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;
	}
}
/** Wird nach dem Auslesen des Gentable aber noch vor dem Anwenden einer Standardkontierung ausgeführt.
 * @param {Accounting} standardAccounting Das Standardkontierungs-Objekt
 * @since Invoice 1.1.300
**/
Gentable.prototype.ue_BeforeStandardAccounting = function(standardAccounting){
  /* Beispiel: Kürzt das Gentable auf die gleiche Anzahl an Positionen wie die Standardkontierung *
    accObj.getAccountingPositions(accObj.AccountingName);
    var accPos = accObj.Accounting[accObj.AccountingName];
    if( this.Rows.length>accPos.length ){
        for( r=this.Rows.length-1; r>=accPos.length ;r-- ){
            if( this.Logg instanceof Log ){
                this.Logg.info("["+r+"] this.Rows.pop();");
            }
            this.Rows.pop();
        }
    }
    */
}

/** Wird nach dem Anwenden einer Standardkontierung ausgeführt.
 * Im Anschluss wird automatisch gentable.createGentableStr(true) ausgeführt.
 * @param {Accounting} standardAccounting Das Standardkontierungs-Objekt wird ab Invoice 1.1.300 mitgegeben
 * @since Invoice 1.0.300
**/
Gentable.prototype.ue_AfterStandardAccounting = function(standardAccounting){
  ;
}