Skip to main content
Skip table of contents

Automatisierte Aufgaben (Workflow)

Inhalt

Funktionsübersicht

  • Führt Aktionen in Abhängigkeit vordefinierter Ereignisse aus
  • Dient zur Abbildung von unternehmensspezifischen Workflows
  • Möglichkeit für zusätzlich benötigte Eingaben
  • Kann E-Mail Verständigungen auslösen

Pflegefenster

Die Anlage und Pflege der automatisierten Aufgaben erfolgt im Fenster „Grundlagen – Automatisierte Aufgaben"

Spaltenbeschreibung

SpaltennameBeschreibung

Aktiv

In dieser Spalte wird angegeben, ob die gewählte Aufgabe aktiviert ist oder nicht. Nur aktivierte Aufgaben werden tatsächlich ausgeführt.
Ereignis

Das auslösende Ereignis für die automatisierte Aufgabe. Die Aktion wird aber nur durchgeführt, wenn die Bedingung zutrifft.

Beispiele für Ereignisse:

  • Erledigung einer CRM Aufgabe
  • Anlage eines neuen Kunden
  • Einfügen einer Position in einen Kundenauftrag
Bedingung

Die Bedingung, unter der eine Aktion ausgeführt wird, wenn ein Ereignis eintritt. Hier können alle Spalten abgefragt werden, die auf Basis des jeweiligen Ereignisses selektiert wurden.

Beispiele für Bedingungen:

  • "where kategorie='***'"
  • "where hpg_nr=83 and lager=1"
Pos.Gibt die Reihenfolge der Ausführung der Aktionen an. Diese Option ist dann von Bedeutung, wenn bei einem Ereignis mehrere Aktionen durchgeführt werden müssen und diese in einer bestimmten Reihenfolge ausgeführt werden sollen.
Aktion

Wird ein Ereignis mit einer zutreffenden Bedingung ausgelöst, wird in „Aktion" der durchzuführende Aufgabentyp bestimmt. Für jede Aktion sind zusätzlich „Aktion Werte" anzugeben, wobei je nach Aktion unterschiedliche Aktionswerte verfügbar sind.

Beispiele für Aktionen:

  • Durchführung verweigern ( Datenbank-Rollback wird durchgeführt )
  • E-Mail senden
  • Neue CRM Aufgabe anlegen
  • Neuen CRM Vorgang anlegen
  • Meldungsfenster anzeigen
  • Überschreiben der Quell- oder auch Zieldaten mit definierten Werten
Aktion WerteBeinhaltet die Detail-Daten für die auszuführende Aktion. Aktion Werte wird immer mit einem XML Format befüllt. Abhängig von der gewählten Aktion stehen unterschiedliche Möglichkeiten für die Aktion Werte zur Verfügung.

Pflegefenster - Neu

Über den Grundlagenschalter "Neuen Workflow Manager verwenden" in der Kategorie "Allgemein" kann die Verwendung des neuen Fensters aktiviert werden. 


Ereignisse

In der nachfolgenden Tabelle sind sämtliche Ereignisse aufgelistet, die zurzeit implementiert sind. Zusätzlich ist hier auch abgebildet, welcher SQL-Alias für die „SQL-Where-Bedingung" verwendet werden kann und welche Tabelle als „Source"-Tabelle verwendet wird.

Ereignis

Source (Tabelle)

Alias(e)

Beschreibung

Appointment.FirstInsert

ARS_ZEITPLAN

z

Termin aus dem Terminreservierungssystem (ARS) wurde eingefügt ( wird bei mehrtägigen Einträgen nur 1x beim ersten Eintrag ausgeführt )

Appointment.FirstUpdate

ARS_ZEITPLAN

z

Termin aus dem Terminreservierungssystem (ARS) wurde aktualisiert ( wird bei mehrtägigen Einträgen nur 1x beim ersten Eintrag ausgeführt )

Appointment.Insert

ARS_ZEITPLAN

z

Termin aus dem Terminreservierungssystem (ARS) wurde eingefügt ( wird pro neuen Datensatz ausgeführt bei mehrtägigen Einträgen )

Appointment.Update

ARS_ZEITPLAN

z

Termin aus dem Terminreservierungssystem (ARS) wurde aktualisiert ( wird pro neuen Datensatz ausgeführt bei mehrtägigen Einträgen )

AssemblyOrder.Insert

FERTIGUNGSAUFTRAG

f

Fertigungsauftrag wurde eingefügt

AssemblyOrder.Update

FERTIGUNGSAUFTRAG

f

Fertigungsauftrag wurde aktualisiert

AssemblyOrder.PrintOptionsLoaded

FERTIGUNGSAUFTRAG

f

Beim Drucken eines Fertigungsauftrags, nachdem die Druck-Daten (Quelldaten) geladen wurden.

AssemblyOrderPosition.Escalate

FAPOSITIONEN

p

Eskalation einer Fertigungsauftragsposition - der Datensatz der Tabelle FAPOS_ESKALIERUNG steht in den "OriginalValues" zur Verfügung. Beispiel:

@GetOriginalValue("GRUND")

Basket.OrderCreated

ANGEBOTE

a

Auftrag wurde aus Warenkorb erstellt (inkl. Positionen)

ContactPerson.Insert

ANSPRECHPARTNER

a

Ansprechpartner wurde in die Datenbank eingefügt

ContactPerson.Update

ANSPRECHPARTNER

a

Ansprechpartner wurde in der Datenbank aktualisiert

Customer.Insert

KUNDEN

k

Kunde wurde in die Datenbank eingefügt

Customer.Update

KUNDEN

k

Kunde wurde in der Datenbank aktualisiert

Customer.Merged

KUNDEN

k

Kunde wurde in der Datenbank zusammengeführt

DeliveryNote.CreateServicePointLIEFERSCHEINElLieferschein an Servicestelle wurde erstellt

DeliveryNote.Insert

LIEFERSCHEINE

l

Lieferschein (Kopf) wurde in die Datenbank eingefügt

DeliveryNote.Update

LIEFERSCHEINE

l

Lieferschein wurde aktualisiert

DeliveryNote.Print

LIEFERSCHEINE

l

Wird ausgelöst, bevor der Lieferschein gedruckt wird (Klick auf „Drucken" im Druck-Dialogfenster)

DeliveryNote.ReturnFromServicePointLIEFERSCHEINElRetour-Lieferschein von Servicestelle wurde erstellt
Device.InsertGERAETEgWird ausgelöst, nachdem ein neues Gerät in die Datenbank eingefügt wurde
Device.UpdateGERAETEgWird ausgelöst, nachdem ein Gerät in der Datenbank aktualisiert wurde

Inquiry.Insert

ANFRAGE

a

Anfrage (Kopf) wurde in die Datenbank eingefügt

Inquiry.Update

ANFRAGE

a

Anfrage wurde in der Datenbank aktualisiert

Invoice.DunningRunDunningBlockRECHNUNGENrWird ausgelöst, wenn ein Mahnlauf durchgeführt wird, die Rechnung nicht bezahlt ist und mit einer Mahnsperre gekennzeichnet ist
Invoice.DunningRunMailSentRECHNUNGENrWird ausgelöst, wenn ein automatischer Mahnlauf durchgeführt wird und die Rechnung per Mail versendet wurde

Invoice.Insert

RECHNUNGEN

r

Rechnung (Kopf) wurde in die Datenbank eingefügt

Invoice.Update

RECHNUNGEN

r

Rechnung wurde in der Datenbank aktualisiert

Invoice.Print

RECHNUNGEN

r

Wird ausgelöst, bevor die Rechnung gedruckt wird (Klick auf „Drucken" im Druck-Dialogfenster)

InvoicePosition.Insert

REPOSITIONEN

p=REPOSITIONEN
r=RECHNUNGEN

Nachdem eine Rechnungsposition in die Datenbank eingefügt wurde

InvoicePosition.Update

REPOSITIONEN

p=REPOSITIONEN
r=RECHNUNGEN

Nachdem eine Rechnungsposition aktualisiert wurde

Item.AssemblyChanged

ARTIKELSTAMM

a

Wird ausgelöst, sobald sich die Zusammensetzung einer Baugruppe geändert hat

Item.Insert

ARTIKELSTAMM

a

Artikel wurde in die Datenbank eingefügt

Item.Update

ARTIKELSTAMM

a

Artikel wurde aktualisiert

Item.Copy

ARTIKELSTAMM

a

Nachdem ein Artikel kopiert wurde

Item.BeforeBasketInsert

ARTIKELSTAMM

a

Bevor ein Artikel in den Warenkorb eingefügt wird

Item.AfterBasketInsert

ARTIKELSTAMM

a

Nachdem ein Artikel in den Warenkorb eingefügt wurde

Item.BeforePOSInsert

ARTIKELSTAMM

a

Bevor ein Artikel in die POSKassa eingefügt wird

Item.AfterPOSInsert

ARTIKELSTAMM

a

Nachdem ein Artikel in die POSKassa eingefügt wurde

ItemPicture.InsertBILDERbNachdem zu einem Artikel ein neues Artikelbild hinzugefügt wurde.

ItemText.Insert

ARTIKELSTAMM_TEXTE

t

Artikelstamm-Text wurde in die Datenbank eingefügt

ItemText.Update

ARTIKELSTAMM_TEXTE

t

Artikelstamm-Text wurde in der Datenbank aktualisiert

ItemForeignLanguage.Insert

ARTIKELTEXT

t

Artikeltext ( Fremdsprachentext ) wurde in die Datenbank eingefügt

ItemForeignLanguage.Update

ARTIKELTEXT

t

Artikeltext ( Fremdsprachentext ) wurde in der Datenbank aktualisiert

Order.CreatedFromBasket

ANGEBOTE

a

Auftrag wurde aus dem Warenkorb erstellt (Automatisierte Aufgabe wird ausgeführt, nachdem Kopf angelegt UND Positionen eingefügt wurden)

Auftrag wurde aus Bestellvorschlag (Bestellung bei anderer oder eigener OE) erstellt (Automatisierte Aufgabe wird ausgeführt, nachdem Kopf angelegt UND Positionen eingefügt wurden)

Order.CreateDeliveryNote

ANGEBOTE

a

Bevor aus dem Auftrag ein Lieferschein erstellt wird

Order.CreatePurchaseDeliveryNote

ANGEBOTE

a

Nachdem ein Rücklieferschein an den Lieferanten erstellt wurde (aus Auftrag)

Order.CreatePurchaseOrder

ANGEBOTE

a

Nachdem eine Bestellung aus dem Auftrag erstellt wurde

Order.Copy

ANGEBOTE

a

Nachdem ein Auftrag kopiert wurde.

Order.BeforeInsert

ANGEBOTE

a

Wird ausgelöst, bevor ein Auftrag in die Datenbank eingefügt wird

Order.BeforeUpdate

ANGEBOTE

a

Wird ausgelöst, bevor ein Auftrag in der Datenbank aktualisiert wird

Order.Insert

ANGEBOTE

a

Auftrag (Kopf) wurde in die Datenbank eingefügt. Um alle Auftragserstellungen abzudecken ist zusätzlich auch Order.CreatedFromBasket zu verwenden.

Order.Update

ANGEBOTE

a

Auftrag wurde in der Datenbank aktualisiert

Order.CreateCallOrder

ANGEBOTE

a

Nachdem ein Abrufauftrag aus Rahmenauftrag in der Datenbank erstellt wurde

Order
.BeforeCreateDownPaymentInvoice

ANGEBOTE

a

Bevor eine Anzahlungsrechnung aus einem Auftrag erstellt wird

Order
.BeforeCreateDeliveryProposal

ANGEBOTE

a

Bevor ein Liefervorschlag aus einem Auftrag erstellt wird

OrderPosition.Insert

ANGEBOTSPOSITIONEN

p=ANGEBOTSPOSITIONEN
a=ANGEBOTE

Nachdem eine Auftragsposition in die Datenbank eingefügt wurde

OrderPosition.Update

ANGEBOTSPOSITIONEN

p=ANGEBOTSPOSITIONEN
a=ANGEBOTE

Nachdem eine Auftragsposition aktualisiert wurde

OrderPosition.DeleteANGEBOTSPOSITIONENp=ANGEBOTSPOSITIONEN
a=ANGEBOTE
Nachdem eine Auftragsposition gelöscht wurde

OrderPosition
.PossibleDeliveryDateChanged

ANGEBOTSPOSITIONEN

p=ANGEBOTSPOSITIONEN
a=ANGEBOTE

Der mögliche Liefertermin wurde in einer Auftragsposition geändert.

Hier steht der zusätzliche DataTable "CHANGED_BY" zur Verfügung. 

Damit erfolgt die Angabe, welches Dokument die Änderung des Liefertermins verursacht hat.

Darin befinden sich folgende Spalten:

CHANGED_BY (AssemblyOrderCreated,AssemblyOrderUpdated,PurchaseOrderPositionCreated,PurchaseOrderPositionUpdated)

INX (Eindeutiger INX des Fertigungsauftrags oder der Bestellposition)

DOK_NR (Fertigungsauftragsnummer oder Bestellnummer)

Beispiel für den Zugriff in der WHERE-Bedingung: "where '"+@OriginalValue("CHANGED_BY","CHANGED_BY")+"' not in ('AssemblyOrderCreated') and p.erledigt=0 

Process.Insert

VORGANG

v

CRM-Vorgang wurde in die Datenbank eingefügt

Process.Update

VORGANG

v

CRM-Vorgang wurde aktualisiert

ProductionReport.CreateLotNumber

FERTIGUNGSAUFTRAG

f

Wird ausgelöst, wenn im Fenster "Produktionsausweis" eine neue Chargennummer vergeben wird. Dazu muss die Grundlageneinstellung "Automatische Chargennummernvergabe" aktiviert sein und die Einstellung "Chargennummer aus" auf den Wert "3 - Automatisierte Aufgabe" gestellt sein.

Mit der Aktion "Target.Override" kann die Chargennummernvergabe erfolgen:

<XML>
    <LotNumber Id="47">
        <Lotnumber>
             @ExecuteScalar("select fanr+kennwort from fertigungsauftrag where fanr='"+@SourceValue("FANR")+"'")
        </Lotnumber>
    </LotNumber>
</XML>


PurchaseOrder.Insert

BESTELLUNGEN

b

Bestellung (Kopf) wurde in die Datenbank eingefügt

PurchaseOrder.Update

BESTELLUNGEN

b

Bestellung wurde aktualisiert

PurchaseOrder.Print

BESTELLUNGEN

b

Wird ausgelöst, bevor eine Bestellung gedruckt wird (Klick auf „Drucken" im Druck-Dialogfenster)

PurchaseOrder.MailSent

BESTELLUNGEN

b

Bestellung wurde gemailt

PurchaseOrderPosition.Insert

BESTELLPOSITIONEN

p=BESTELLPOSITIONEN
b=BESTELLUNGEN

Bestellposition wurde in die Datenbank eingefügt

PurchaseOrderPosition.Update

BESTELLPOSITIONEN

p=BESTELLPOSITIONEN
b=BESTELLUNGEN

Bestellposition wurde aktualisiert

PurchaseDeliveryNote.Insert

LS_WARENEINGANG

l

Eingangslieferschein (Kopf) wurde in die DB eingefügt

PurchaseDeliveryNote.Update

LS_WARENEINGANG

l

Eingangslieferschein wurde aktualisiert

PurchaseDeliveryNotePosition.Insert

LS_WEPOSITIONEN

p=LS_WEPOSITIONEN
l=LS_WARENEINGANG

Eingangs-Lieferscheinposition wurde in die Datenbank eingefügt

PurchaseDeliveryNotePosition.Update

LS_WEPOSITIONEN

p=LS_WEPOSITIONEN
l=LS_WARENEINGANG

Eingangs-Lieferscheinposition wurde in der Datenbank aktualisiert

PurchaseDeliveryNotePosition
.BeforeTechnicalApproval

LS_WEPOSITIONEN

p=LS_WEPOSITIONEN
l=LS_WARENEINGANG

Eingangs-Lieferscheinposition vor technischer Freigabe

PurchaseInvoice.BeforeCommercialApprovalWARENEINGANGwBei Eingangsrechnungen kann vor der kaufmännischen Freigabe auf bestimmte Werte geprüft werden.

PurchaseInvoice.Insert

WARENEINGANG

w

Eingangsrechnung (Kopf) wurde in die DB eingefügt

PurchaseInvoice.Update

WARENEINGANG

w

Eingangsrechnung wurde aktualisiert

PurchaseInvoicePosition.Insert

WEPOSITIONEN

p=WEPOSITIONEN
w=WARENEINGANG

Eingangs-Rechnungposition wurde in die DB eingefügt

PurchaseInvoicePosition.Update

WEPOSITIONEN

p=WEPOSITIONEN
w=WARENEINGANG

Eingangs-Rechnungposition wurde aktualisiert

PurchaseInvoicePosition
.BeforeTechnicalApproval

WEPOSITIONEN

p=WEPOSITIONEN
w=WARENEINGANG

Eingangs-Rechnungsposition vor technischer Freigabe

StockPosting.Insert

KARTEI

k

Nachdem eine Kartei-Buchung durchgeführt wurde (je Position)

StockPosting.BeforeUpdate

KARTEI

k

Bevor eine Kartei-Buchung aktualisiert wird

StockPosting.BeforeDelete

KARTEI

k

Bevor eine Kartei-Buchung gelöscht wird

StockTransfer.BeforeStockPosting

SCHNELLUMBUCHUNG

s

Bevor eine Schnellumbuchungs-Position lagergebucht wird

StockTransfer.StockPosting

SCHNELLUMBUCHUNG

s

Nachdem eine Schnellumbuchungs-Position lagergebucht wurde

Shipment.CreatedVERSENDUNGvNachdem eine Versendung erstellt wurde.

TaskCenter.FirstStart



Dieses Ereignis wird von dem Benutzer ausgelöst, der TaskCenter das erste Mal am Tag startet. Pro Tag kann dieses Ereignis also nur 1x ausgelöst werden.

Beispiel:

Benutzer A startet am 27.12.2018 um 07:00h TaskCenter – TaskCenter.FirstStart wird ausgelöst.

Benutzer B startet am gleichen Tag um 07:02h TaskCenter – keine erneute Auslösung.

Benutzer A beendet TaskCenter und startet dieses neu um 12:00h – keine erneute Auslösung.

Task.BeforeMailNotification

VG_DETAIL

d

Dieses Ereignis wird ausgelöst, bevor eine Verständigung per E-Mail zu einer CRM-Aufgabe gesendet wird.

Task.Finished

VG_DETAIL

d

Dieses Ereignis wird ausgelöst, wenn eine CRM-Aufgabe auf erledigt gesetzt wurde.

Task.Update

VG_DETAIL

d

Wird ausgelöst, wenn eine CRM-Aufgabe aktualisiert wurde.

Supplier.InsertLIEFERANTlWird ausgelöst, wenn ein Lieferant angelegt wird.
Supplier.UpdateLIEFERANTlWird ausgelöst, wenn ein Lieferant aktualisiert wird.
InspectionOrder.InsertQS_AUFTRAGqsWird ausgelöst, wenn ein Prüfauftrag erstellt wird.
InspectionOrder.UpdateQS_AUFTRAGqsWird ausgelöst, wenn ein Prüfauftrag aktualisiert wird.
PackageData.PackageDataImportInsertedBEX_NVEbWird ausgelöst, wenn in der PackageDataImport Schnittstelle ein neuer Eintrag eingefügt wird

Aktionen

Funktionen und Platzhalter

Oftmals werden statt konstanten Werten variable Werte benötigt. Diese können über Funktionen und Platzhalter in der Bedingung oder den Aktion Werten ermittelt und verwendet werden.

Funktionen werden über StringFunctions realisiert siehe Allgemeine StringFunctions.


Spezifische StringFunctions für automatisierte Aufgaben

Einzelnen Wert aus der Datenbank selektieren (@ExecuteScalar)

@ExecuteScalar(Sqltext)

= Führt eine Datenbankabfrage durch und gibt den ersten Wert zurück

Beispiele:

              @ExecuteScalar("select nummer from angebote where angebotsnummer="+@GetSourceValue("ANGEBOTSNUMMER"))

Mehrfachwerte aus der Datenbank selektieren (@FillTable)

@FillTable(SqlText)

= Führt eine Abfrage auf die Datenbank aus und liefert eine Tabelle

Beispiel:

              @Join(", ", @FillTable("select deutsch from vorgabewerte where code=1 order by deutsch") )

Ergebnis:

              Direkte Kosten, Fremdleistung, Lohn, Material, Provision, SET-Artikel, Variantenartikel

 Sachbearbeiter Name

@GetCrmPersonInCharge(INX)

= Liefert den Namen des CRM-Sachbearbeiters aus dem Personalstamm. Der INX ist der eindeutige Index des Mitarbeiters aus dem Personalstamm.

Beispiele:

              GetSourceValue("MITARBEITERINX"))

              ExecuteScalar("select inx from personalstamm where mitarbeiternummer="+@GetSourceValue("MNR")))

Datenbankbenutzer

              @GETDBUSER() ... Liefert den Datenbank-Benutzer der aktuellen Sitzung

Zugriff auf Werte vor Änderung

@GetOriginalValue(Spaltenname)

@GetOriginalValue(Tabellenname,Spaltenname) ... Zugriff auf die "Original-Tabelle" vor der Änderung eines Datensatzes (ähnlich GetSourceValue)


Beispiele:

Möchte man in der Bedingung einen Wert vor der Änderung mit dem neuen Wert vergleichen, so könnte die Bedingung so aussehen:

CODE
"where to_char(ende,'YYYY-MM-DD HH24:MI:SS') != '" +@ToDate(@GetOriginalValue("ENDE"),"yyyy-MM-dd HH:mm:ss")+ "'"


Zugriff auf Werte nach Änderung

@GetSourceValue(Spaltenname)

@GetSourceValue(Tabellenname,Spaltenname) ... Zugriff auf die "Tabelle(n)" der veränderten/neuen Werte.

Die Source wird immer aufgrund des Ereignisses in der automatisierten Aufgabe gesehen.
              zB. Ereignis "Order.Insert" ... somit ist die Source-Tabelle die "Order"-Tabelle ... also "ANGEBOTE"
              zB. Ereignis "Customer.Update" ... Source-Tabelle="Customer"="KUNDEN"
              zB. Ereignis "Task.Add" ... Source-Tabelle="Task"="VG_DETAIL"
              je nach Art des Datensatzes werden mehrere Tabellen dazu selektiert.
              zB. gibt es bei "Order.Insert" immer einen Kunden. Der Zugriff erfolgt dann zB. mit @GetSourceValue("KUNDEN","NAME1")


Neuer Index

@GetNewIndex("ARTPROFKRIT")

Es kann ein neuer Index (INX) angelegt werden.

Praxisbeispiele

Anpassung der Kundennummer für bestimmte Anwendungsfälle

CODE
Ereignis: Customer.Insert
Bedingung: where OENR=15 and AP=310
Aktion: Sql.ExecuteScript
Aktion Werte:
<XML>
	<STATEMENT Id="1">"delete from ansprechpartner where kundennummer="+@SourceValue("NUMMER")</STATEMENT>
	<STATEMENT Id="2">"update kunden set nummer = (select max(nummer)+1 from kunden where nummer >= 80000 and nummer < 88887) where inx="+@SourceValue("INX") </STATEMENT>
	<STATEMENT Id="3">"update kunden set fibu_nr=nummer, versandart='1 DPD', zahlungsbed='87', lieferbed = '1', mdtnr=1, vertreternr= 99,vertreterinx = 51, srkz = 1, srzk =0, ustpflicht = 1, pk= 2 where inx="+@SourceValue("INX") </STATEMENT>
	<STATEMENT Id="4">"insert into ansprechpartner (inx,kundennummer,csi_eigene_aufgaben,fibu_kontakt,ad,au,md,mu) select "+@GetNewIndex("ANSPINX")+",nummer,0,0,sysdate,'"+@GetDbUser()+"',sysdate,'"+@GetDbUser()+"' from kunden where inx="+@SourceValue("INX")</STATEMENT>
	<STATEMENT Id="5" Var="KNR">"select max(nummer) from kunden where nummer < 80000"</STATEMENT>
	<STATEMENT Id="6" NoTrans="True">"update indizes set kundennr = {KNR} where kundennr="+@SourceValue("NUMMER")</STATEMENT>
</XML>

Automatische Chargenvergabe im Produktionsausweis

Hier wird ein Muster für neue Chargennummern erzeugt und mit einer fortlaufenden Nummer aus den bereits im FA zugebuchten Chargen ergänzt.

FA-Nummer ohne erste Stelle / Positionsnummer – laufende Nummer je Auftrag (ohne führende 0en)

A190021/7 = 190021/7-1
L700023 = 700023/1-1

CODE
Ereignis: ProductionReport.CreateLotNumber
Bedingung: where 1=1
Aktion: Target.Override
Aktion Werte: <XML>
    <LotNumber Id="47">
        <Lotnumber>
@ExecuteScalar("
select (case when fanr like 'A%' then substr(fanr,2,len(fanr)-1)
else substr(fanr,2,len(fanr)-1)+'/1'
end)+'-'+to_char(max_nr+1) from 
(
select 
       f.fanr, max(case when isnumeric(right(chargennummer, len(chargennummer)-charindex('-',chargennummer)))=1 
            then to_number(right(chargennummer, len(chargennummer)-charindex('-',chargennummer)))
                 else 0 end) as max_nr
       from fertigungsauftrag f left join chargennummer c on f.nummer=c.dok_nr and c.eingang > 0 where f.fanr='"+@SourceValue("FANR")+"' group by f.fanr
) t
")
        </Lotnumber>
    </LotNumber>
</XML>


Validierung E-Mail Adresse

CODE
Ereignis: Customer.Update
Bedingung: where einvoice_email is not null
Aktion: Sql.ExecuteScript
Aktion Werte: <XML>
<STATEMENT Id="1">
"update kunden
 set einvoice_email = trim(einvoice_email)
 where INX="+@SourceValue("INX")
</STATEMENT>
</XML>



Ereignis: Customer.Update
Bedingung: where einvoice_email is not null and not regexp_like(einvoice_email,'^[a-zA-Z0-9._%-]+\\+?[a-zA-Z0-9._%-]*@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,7}$')
Aktion: Deny
Aktion Werte: <XML><MESSAGE Id="1">
		<DefaultText>"E-Mail Adresse "+@SourceValue("einvoice_email")+" im Feld eInvoice ist ungültig!"</DefaultText>
	</MESSAGE> </XML>


Fehlerbehebung

FehlermeldungLösung

Bei der Ausführung einer automatisierten Aufgabe ist ein unvorhergesehener Fehler aufgetreten: Conversion failed when converting the varchar value '10031876A' to data type int.

Die Bestellnummer ist ein String Feld und muss unter Hochkomma ‘ ‘ gesetzt werden.  
"where a.Bestellnummer != '"+@get...........+"' and ........"



JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.