Positionen aus übergeordneten Vorgang mit einem "reset" auf den Positionsforschritt übernehmen
var work$ACitems = parent$parentACitems;
// (accounting items work end) will copy all items of parent and sets (completed = false; charged = false, degree of completion = 0%, assigned to count = 0, work in progess = 0, work done = 0, work in pogress people =0) e.g. after split from offer to invoice
Auslieferung von Positionen: Mengenübernahme in einen Lieferschein
var work$ACitems = parent$parentACitemsLOT;
// will copy all LOT items of parent and sets (completed = false; charged = false, degree of completion = 0%, assigned to count = 0, work in progess = 0, work done = 0, work in pogress people =0) e.g. after split from sales confirmation to delivery note
Einlastung Zeitpositionen: Mengenübernahme in von Stundenpositionen in ein Projekt
var work$ACitems = parent$parentACitemsTIME;
// will copy all TIME items of parent and sets (completed = false; charged = false, degree of completion = 0%, assigned to count = 0, work in progess = 0, work done = 0, work in pogress people =0) e.g. after split from sales confirmation to project
Sammelrechnung erzeugen: Übernahme aller Positionen aus Rechnungsentwürfen
var work$ACitems = work$ACitemsUnite;
// (accounting unite unfinished items) will e.g. build a collective bill, all others found and without number are removed
Projekt Budgetfreigabe: Übergabe an Teameinlastung oder direkt zur Abarbeitung an Teammitglieder
var work$ACitems = work$ACitemsBudgetRelease;
// (accounting items budget release) project only: run release budget to team planning or directly to people.
Projekt Budgetaktualisierung: Übernimmt verbrauchte Zeiterfassungen in den Projektstatus
var work$ACitems = work$ACitemsBudgetUpdate;
// (accounting items budget update) project only: update budget from consumend time.
Projektende: Beendet Budgetfreigabe und entfernt alle Arbeiten aus der Zeiterfassung
var work$ACitems = work$ACitemsWorkEnd;
// (accounting items work end) project only: ends all work. Removes work slots from project team.
Rechnung zum Projekt: Abrechnung der Zeiten
var work$ACitems = work$ACitemsTimeTrackBill;
// (accounting items time tracking bill) invoice with 'itemReferenceID' set to project id (after split to invoice set from 'parentID' (parent item id) will be billed ... all booked hours will be collected.
Lieferschein Auslieferung: Warenbewegungen werden gebucht.
var work$ACitems = work$ACitemsWarehouseOut;
// delivery note: automaticly finds & assigns warehouse stock for delivery
Vorgangspositionen mit einem Status versehen
var work$ACitemsStatus1 = "TP";
// zeigt Positionen in bestimmten Sichten. Der Status wird auf "" gesetzt sobald die Mengen fertig, eingetroffen oder geliefert wurden.
TP = "ToDo / erwartete Losmengen Fertigstellung" -> diese Positionen befinden sich in der Produktion (Produktionsauftrag)
TI = "ToDo / erwarteter Wareneingang" -> diese Positionen befinden sich in Anlieferung (Bestellung)
TO = "ToDo / Ware zur Auslieferung" -> diese Positionen sind zur Auslieferung bestimmt (Lieferschein)
TM = "Bedarfsplanung" -> diese Positionen befinden sich in der Bedarfsplanung (Bedarfsplanung)
T1 = "Bedarfsplanung" -> diese Positionen sind angeboten (Angebot)
T2 = "Bedarfsplanung" -> diese Positionen sind beauftragt (Auftrag)
var summeStd = work$HOURS_ACitems; // Berechnet die Summe der Std. aus alle Positionen.
Um die Summe auf eine bestimmtes Produkt zu ermittelt setzt man den Context auf eine Produkt-ID wie folgt:
var CONTEXTproductid = "5728534915973120"; // filtert innerhalb von work$HOURS_ACitems auf diese ProduktId.
Freistunden auf ein Supportkonto aktivieren: Bei der Abrechnung könnte die Summen gezogen werden um diese auf die ein Feld im Kontakt so lange zu addieren bis die Summe ein Zeitbudget erreicht. Die Freistunden werden als zusätzliche Std. Position mit negativen Zeitwert erfasst um den Anteil nicht zu berechnen:
var kostenlos = 2.00; // 2 Freistunden abziehen
var work$ACadditem = CONTEXTproductid+"; "+(kostenlos*-1.0)+";Freistunden aus Servicevereinbarung;0" // 5 Werte getrennt durch ; "productid; amount; text; note; free" (free = 0 for false and 1 for true)
Summenbildung auf die Vorgangspositionen: Brutto, Netto, USt. Summen werden kalkuliert.
var work$ACtotalGrossAmount = 'do:recalcTotal';
Basis für den Zugriff auf die Positionen ist das ein JSON String der über parent$parentACitemlist aus dem übergeordnetem Vorgang, z.B. einem Auftrag gelesen wird:
Für die Umwandlung werden alle ' durch " ersetzt.
var positionen = JSON.parse(parent$parentACitemlist.replace(/'/g, '"')); // JSON ARRAY aller Positionen
Anschließen liest Du die Positionen Zeile für Zeile:
for(var i = 0; i< positionen.length; i++) {
var position = positionen[i]; // JSON OBJECT einer Position
var produktname = position['name'];
var produktgruppen = position['groups'];
}
$$F123 = "<§POSITIONEN><§P1><§AID>6441098946805760</§AID><§ANR>024.1</§ANR><§A>Werbespot</§A><§M>1</§M><§E>Stck.</§E><§P>690</§P><§PE>1</§PE><§R>0</§R><§U>0</§U><$Z></$Z><$PID>0</$PID></§P1><§P2><§AID>6331201454342144</§AID><§ANR>024.2</§ANR><§A>Sendung</§A><§M>1</§M><§E>Stck.</§E><§P>4000</§P><§PE>1</§PE><§R>0</§R><§U>0</§U><$Z></$Z><$PID>0</$PID></§P2><§COUNT>2</§COUNT></§POSITIONEN>"
P1 = Position 1 ( P2, P3 für weitere Positionen )
AID = Produkt Id
ANR = Produkt Nr
A = Produkt Bezeichnung
M = Menge
E = Einheit
P = Preis
PE = Einkaufspreis
R = Rabatt
U = USt. Satz
Z = Zusatzfelder
PID = Positions Id
Über eine Webformular können wir die Arbeits- und Leistungs-Zeiterfassung so ermöglichen, das die Zeiten vom Mitarbeiter einfach erfasst werden können. Diese Webformulare können sehr gut per QR Code geöffnet werden, um dann den Mitarbeiter und das Arbeitspaket gleich mit zu identifizieren. Wir haben dazu Varianten im BPM Markplatz unter HR / Personalplanung
Die Buchung von Arbeitszeiten bezieht sich nur dann auch auf Arbeitspaket-Positionen, wenn der Mitarbeiter solche aktiv Bearbeitet oder geparkt hat.
var workTimeData = {
"employeeId": $$F3554,
"workTimeEntries": [{
"type": $$F3556, //
"timestamp": $$F3557,
"note": $$F3558
}]
}
work$ACbookworktime = JSON.stringify(workTimeData);
employeeId ist die Personal Nr. aus dem Mitarbeiterprofil (Zeitkonto Feld alias: "employeeid")
type: 'Start|1,Pause|2,Ende|4,Fortsetzen|3';
Wir können mit einem JSON wie unten beschrieben folgendes erreichen:
Tätigkeit Starten
Tätigkeit Pausieren
Tätigkeit automatisch neu Starten
Tätigkeit Beenden
var workTimeData = {
"employeeId": $$F3868,
"jobId": $$F3870,
"workTimeEntries": [{
"timestamp": $$F3871,
"timestampend": $$F3872,
"note": $$F3873,
"end": $$F3872
}]
}
work$ACbookworktime = JSON.stringify(workTimeData)
JobId: Arbeitspaket - Leistungserfassung zu dieser Position.
timestamp: Start der Arbeiten. (Ist die Startzeit gesetzt wird immer eine neue Zeitbuchung gestartet)
timestapmend: Ende der Arbeiten (Explizit beendet - für Implizite Beendingung siehe "Arbeitszeiterfassung steuert Arbeitpakete").
Wird nur die Startzeit übergeben dann gilt das Arbeitspaket als aktiv und wird im Mitarbeiterprofil (Zeitkonto Feld alias: "employeeworkitem") als aktiv vermerkt.
In der Buchungsübersicht sind aktive Arbeitspaket mit 00:00 Arbeitszeit gelistet. Mit dem Ende erfolgt die Berechnung der gebrauchten Arbeitszeit.
Da der Mitarbeiter wärend er an Arbeitspakete arbeitet die Zeiterfassung für seine Anwesenheit bedient steuert dies automatisch auch die Laufzeiten der Arbeitspakete.
Wird eine Arbeitszeit:Pause gestartet so wird das aktive Arbeitspaket geparkt (Zeit bis hierhin wird gebucht). Bei Pausenende wird das Arbeitspaket automatisch erneut gestartet und im Mitarbeiterprofil von geparkt auf aktiv gesetzt (Zeitkonto Feld alias: "employeeworkitemresume").
Wird ein Arbeitszeit:Resume gestartet so wird das geparkte Arbeitspaket mit Startzeit = Pause-Ende neu gestartet.
Wird eine Zeit nur mit Ende zum Arbeitspaket gebucht dann wird das vorhandene aktive Arbeitspaket beendet.
Entspricht das aktive Arbeitspaket des Miterbeiterprofils nicht dem gebuchten, so werden beide beendet. Hierbei wird die neue Buchung direkt abgeschlossen. In diesem Falle, da die Startzeit fehlt wird Ende gleich Start gebucht mit einer Zeit von 0 abgeschlossen.
Wird ein Arbeitszeit:Ende gebucht, beendet dies automatisch eine aktive Leistungserfassung.