Neu Kunde per Software hinzufügen - MS SQL Stored Procedure Kunde.spKundeInsert aufrufen .NET

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
146
10
Oldenburg
Hallo,

ich möchte per Software einen Kunden hinzufügen.
Wie gehe ich vor?

Mein Problem diese stored procedure hat keine Parameter...

C#:
Dim cmd As SqlCommand = new SqlCommand("spKundeInsert", cn)
   cmd.CommandType = CommandType.StoredProcedure
   cmd.Parameters.AddWithValue("@cMail", "meineEmail@MeineEMail.de")


SQL:
;
DECLARE @retry INT;
DECLARE @CreatedTransaction INT;
DECLARE @ReturnValue INT;
SET @retry = 5;
WHILE @retry > 0
BEGIN
    -- Context Info
    IF(CONTEXT_INFO() IS NOT NULL)
    BEGIN
        SET @OldContextInfo = CONTEXT_INFO();
    END
    ELSE
    BEGIN
        SET @OldContextInfo = 0x0;
    END
    DECLARE @hash VARBINARY(128);
    SELECT @hash = HASHBYTES('SHA1', 'Kunde.spKundeInsert');
    SET CONTEXT_INFO @hash; -- ContextInfo festlegen
    BEGIN TRY
        IF (@@TRANCOUNT = 0)
        BEGIN
           SET @CreatedTransaction = 1;
           BEGIN TRANSACTION
        END;
        ELSE
        BEGIN
            SET @CreatedTransaction = 0;
            SAVE TRANSACTION Savepoint0;
        END;
            IF(OBJECT_ID('tempdb..#Daten_spkundeInsert') IS NOT NULL)
        BEGIN
            DROP TABLE #Daten_spkundeInsert;
        END
        CREATE TABLE #Daten_spkundeInsert(InternalId INT, kInetKunde INT, kKundenKategorie INT, cKundenNr VARCHAR(30),
            cFirma VARCHAR(128), cAnrede VARCHAR(30), cTitel VARCHAR(64), cVorname VARCHAR(126), cName VARCHAR(126),
            cStrasse VARCHAR(255), cPLZ VARCHAR(24), cOrt VARCHAR(64), cLand VARCHAR(64), cTel VARCHAR(30), cFax VARCHAR(30),
            cEMail VARCHAR(255), dErstellt DATETIME, cMobil VARCHAR(30),
            fRabatt DECIMAL(28, 14), cUSTID VARCHAR(20), cNewsletter CHAR(1), cZusatz VARCHAR(60),
            cEbayName VARCHAR(60), kBuyer INT, cAdressZusatz VARCHAR(255), cGeburtstag VARCHAR(10),
            cWWW VARCHAR(255), cSperre CHAR(1), cPostID VARCHAR(255), kKundenGruppe INT, nDrittland TINYINT, nZahlungsziel INT,
            kSprache INT, cISO VARCHAR(5), cBundesland VARCHAR(255), cHerkunft VARCHAR(255), cKassenKunde CHAR(1),
            cHRNr VARCHAR(255), kZahlungsart INT, nDebitorennr INT, cSteuerNr VARCHAR(255), nKreditlimit INT, kKundenDrucktext INT,
            nMahnstopp TINYINT, nMahnrhythmus INT, kFirma TINYINT, fProvision DECIMAL(28,14), nVertreter TINYINT,
            fSkonto DECIMAL(28,14), nSkontoInTagen INT);
        INSERT INTO #Daten_spkundeInsert(InternalId, kInetKunde, kKundenKategorie, cKundenNr, cFirma, cAnrede, cTitel, cVorname,
            cName, cStrasse, cPLZ, cOrt, cLand, cTel, cFax, cEMail,  dErstellt, cMobil, fRabatt,
            cUSTID, cNewsletter, cZusatz, cEbayName, kBuyer, cAdressZusatz, cGeburtstag, cWWW, cSperre, cPostID,
            kKundenGruppe, nDrittland, nZahlungsziel, kSprache, cISO, cBundesland, cHerkunft, cKassenKunde, cHRNr,
            kZahlungsart, nDebitorennr, cSteuerNr, nKreditlimit, kKundenDrucktext, nMahnstopp, nMahnrhythmus, kFirma, fProvision,
            nVertreter, fSkonto, nSkontoInTagen)
            SELECT Daten.kInternalId, Daten.kInetKunde, Daten.kKundenKategorie, Daten.cKundenNr, Daten.cFirma,
                Daten.cAnrede, Daten.cTitel, Daten.cVorname, Daten.cName, Daten.cStrasse, Daten.cPLZ, Daten.cOrt, Daten.cLand,
                Daten.cTel, Daten.cFax, Daten.cEMail, Daten.dErstellt, Daten.cMobil,
                Daten.fRabatt, Daten.cUSTID, Daten.cNewsletter, Daten.cZusatz,  Daten.cEbayName, Daten.kBuyer,
                Daten.cAdressZusatz, Daten.cGeburtstag, Daten.cWWW, Daten.cSperre, Daten.cPostID, Daten.kKundenGruppe,
                Daten.nDrittland, Daten.nZahlungsziel, Daten.kSprache, Daten.cISO, Daten.cBundesland, Daten.cHerkunft,
                Daten.cKassenKunde, Daten.cHRNr, Daten.kZahlungsart, Daten.nDebitorennr, Daten.cSteuerNr,
                Daten.nKreditlimit, Daten.kKundenDrucktext, Daten.nMahnstopp, Daten.nMahnrhythmus, Daten.kFirma, Daten.fProvision,
                Daten.nVertreter, Daten.fSkonto, Daten.nSkontoInTagen
            FROM @Daten AS Daten;
    --
    -- Hier kommt der Code rein vor dem INSERT/UPDATE/DELETE
    --
    IF(OBJECT_ID('tempdb..#Temp_spkundeInsert') IS NOT NULL)
    BEGIN
        DROP TABLE #Temp_spkundeInsert;
    END
    CREATE TABLE #Temp_spkundeInsert(InternalId INT IDENTITY(1,1), kKunde INT);
        -- Daten schreiben
    INSERT INTO dbo.tkunde(kInetKunde, kKundenKategorie, cKundenNr, dErstellt, fRabatt,
        cNewsletter, cEbayName, kBuyer, cGeburtstag, cWWW, cSperre, kKundenGruppe, nDrittland,
        nZahlungsziel, kSprache, cHerkunft, cKassenKunde, cHRNr, kZahlungsart, nDebitorennr, cSteuerNr,
        nKreditlimit, kKundenDrucktext, nMahnstopp, nMahnrhythmus, kFirma, fProvision, nVertreter, fSkonto, nSkontoInTagen)
        OUTPUT INSERTED.kKunde INTO #Temp_spkundeInsert
    SELECT kInetKunde, kKundenKategorie, cKundenNr, 
            dErstellt, fRabatt, cNewsletter, cEbayName, kBuyer, cGeburtstag,
            cWWW, cSperre, kKundenGruppe, nDrittland, nZahlungsziel, kSprache, cHerkunft, cKassenKunde, cHRNr,
            kZahlungsart, nDebitorennr, cSteuerNr, nKreditlimit, kKundenDrucktext, nMahnstopp, nMahnrhythmus, Daten.kFirma,
            Daten.fProvision, Daten.nVertreter, Daten.fSkonto, Daten.nSkontoInTagen
    FROM #Daten_spkundeInsert AS Daten;

    --
    -- tAdresse schreiben
    --
    DECLARE @adresse TYPE_spAdresseInsert;
    INSERT INTO @adresse ( kInternalId,
                            kInetAdresse,
                            kKunde,
                            cFirma,
                            cAnrede,
                            cTitel,
                            cVorname,
                            cName,
                            cStrasse,
                            cPLZ,
                            cOrt,
                            cLand,
                            cTel,
                            cZusatz,
                            cAdressZusatz,
                            cPostID,
                            cMobil,
                            cMail,
                            cFax,
                            cBundesland,
                            cISO,
                            nStandard,
                            nTyp,
                            cUstId )
        SELECT #Temp_spkundeInsert.InternalId,
                tinetadress.kInetAdress,
                #Temp_spkundeInsert.kKunde, 
                Daten.cFirma,
                Daten.cAnrede,
                Daten.cTitel,
                Daten.cVorname,
                Daten.cName,
                Daten.cStrasse,
                Daten.cPLZ,
                Daten.cOrt,
                Daten.cLand,
                Daten.cTel,
                Daten.cZusatz,
                Daten.cAdressZusatz,
                Daten.cPostID,
                Daten.cMobil,
                Daten.cEMail,
                Daten.cFax,
                Daten.cBundesland,
                Daten.cISO,
                1,
                1,
                Daten.cUstId
        FROM #Daten_spkundeInsert AS Daten
        JOIN #Temp_spkundeInsert ON #Temp_spkundeInsert.InternalId = Daten.InternalId
        LEFT JOIN dbo.tinetadress ON tinetadress.kKunde = #Temp_spkundeInsert.kKunde
        
    EXEC dbo.spAdresseInsert @Adresse = @adresse,
                            @callerKundeInsert = 1
    --
    -- Hier kommt der Code nach dem INSERT/UPDATE/DELETE rein
    --
    
    DECLARE @KundenToUpdate AS TYPE_spUpdateKundeSuche;

    INSERT INTO @KundenToUpdate (kKunde)
    SELECT DISTINCT kKunde
    FROM #Temp_spkundeInsert;
    
    EXEC Kunde.spUpdateKundeSuche @Kunden = @KundenToUpdate;


    -- Rückgabe des PK
    SELECT @ReturnValue = #Temp_spkundeInsert.kKunde
        FROM #Temp_spkundeInsert;
        
        IF(@CreatedTransaction = 1)
        BEGIN
            COMMIT-- Nur wenn kein Savepoint gesetzt
        END
        RETURN @ReturnValue;
    END TRY
    BEGIN CATCH
    -- Dedlock Catch
        IF(ERROR_NUMBER() = 1205)
        BEGIN
            SET @retry = @retry - 1;
            IF(@CreatedTransaction = 1)
            BEGIN
                ROLLBACK TRANSACTION;
            END
            ELSE
            BEGIN
                ROLLBACK TRANSACTION Savepoint0;
            END
            IF(@retry = 0)
            BEGIN
                SET CONTEXT_INFO 0x0;
                THROW;
                RETURN 0;
            END
            EXEC dbo.spWaitRandom;
        END
        ELSE
        BEGIN
            SET @retry = -1;
            IF(@CreatedTransaction = 1)
            BEGIN
                ROLLBACK TRANSACTION;
            END
            ELSE
            BEGIN
                ROLLBACK TRANSACTION Savepoint0;
            END
            SET CONTEXT_INFO @OldContextInfo;
            THROW;
            RETURN 0;
        END
    END CATCH
END
 

MartinK

Moderator
Mitarbeiter
5. Dezember 2013
79
14
Die SP bekommt einen Table Type übergeben. Den Typ TYPE_spKundeInsert. Der muss zuvor gefüllt werden und kann dann der SP als Parameter übergeben werden. Table Types sind quasi Tabellen mit denen Daten an eine Funktion oder Stored Procedure übergeben werden können.

So sieht es vom Prinzip in SQL aus. Man kann dann entweder mit VALUES oder einem SELECT die Daten einfügen. und dann die SP aufrufen mit dem Typen als Parameter.

SQL:
DECLARE @Kunde AS TYPE_spkundeInsert;
INSERT INTO @Kunde ( kInternalId ,
                     kInetKunde ,
                     kKundenKategorie ,
                     cKundenNr ,
                     cFirma ,
                     cAnrede ,
                     cTitel ,
                     cVorname ,
                     cName ,
                     cStrasse ,
                     cPLZ ,
                     cOrt ,
                     cLand ,
                     cTel ,
                     cFax ,
                     cEMail ,
                     dErstellt ,
                     cMobil ,
                     fRabatt ,
                     cUSTID ,
                     cNewsletter ,
                     cZusatz ,
                     cEbayName ,
                     kBuyer ,
                     cAdressZusatz ,
                     cGeburtstag ,
                     cWWW ,
                     cSperre ,
                     cPostID ,
                     kKundenGruppe ,
                     nDrittland ,
                     nZahlungsziel ,
                     kSprache ,
                     cISO ,
                     cBundesland ,
                     cHerkunft ,
                     cKassenKunde ,
                     cHRNr ,
                     kZahlungsart ,
                     nDebitorennr ,
                     cSteuerNr ,
                     nKreditlimit ,
                     kKundenDrucktext ,
                     nMahnstopp ,
                     nMahnrhythmus ,
                     kFirma ,
                     fProvision ,
                     nVertreter ,
                     fSkonto ,
                     nSkontoInTagen )
[HIER KOMMT DAS VALUES ODER EIN SELECT]
EXEC dbo.spKundeInsert @Daten = @Kunde;
 

zwitsch

Sehr aktives Mitglied
14. November 2007
425
38
Füge den Kunden mit der Ameise hinzu. Lässt sich gut in eigenem Programmen per Parameter aufrufen. Im eigenen Programm eine CSV-Datei mit den Kundendaten erzeugen, Ameise aufrufen. Danach CSV-Datei wieder löschen. Fehlerhandling nicht vergessen. Funktioniert sicherer als die Suche und Interpretation passender StoredProcedures.
 
  • Gefällt mir
Reaktionen: Horus Sirius

Horus Sirius

Gut bekanntes Mitglied
9. März 2017
146
10
Oldenburg
https://guide.jtl-software.de/jtl-wawi/jtl-ameise/cmd-line-version/

JTL-Ameise 0.984 (c) 2019 JTL-Software-GmbH Start von JTL-Ameise ohne Parameterangabe öffnet die GUI Version Pflichtparameter -s, --server=SERVER Datenbankverbindung wird zu SERVER hergestellt -d, --database=DATABASE Datenbank DATABASE wird angesprochen Datenbanknamen anderer Mandanten sind im Menü JTL-Wawi -> Mandanten zu finden. -u, --dbuser=USER Datenbankverbindung wird mit USER erstellt -p, --dbpass=PASSWORD Passwort des Datenbankbenutzers t, --templateid=ID Import/Exportvorlage mit dieser ID wird genutzt -i, --inputfile=FILE Importdatei. Pflicht, wenn importiert wird -o, --outputfile=FILE Exportdatei. Pflicht, wenn exportiert wird Optionale Angaben, falls nicht angegeben gilt der Wert mit (Std) dahinter --mode=MODE 'test' oder 'production' = Produktivmodus (Std) --loglevel=NUM 1 = ausführlich (Std) 3 = Kompakt 5 = Nur Fehler/Warnungen -- log=FILE Logdatei für Hauptbericht --log_errors=FILE Logdatei für Fehler --log_warnings=FILE Logdatei für Warnungen --log_imported=FILE Logdatei für importierte Datensätze --log_updated=FILE Logdatei für aktualisierte Datensätze --log_other=FILE Logdatei für Sonstiges --csv_errors=FILE Datei, die fehlerhafte Datensätze enthalten soll --csv_warnings=FILE Datei, die Datensätze mit Warnungen enthalten soll --nostdout Keine Konsolenausgabe --no_workflows Es werden keine Workflows ausgeführt --writeLogAtEnd Für eine höhere Importgeschwindigkeit werden die Logdateien erst am Ende des Imports geschrieben. Daher ist bei einem Absturz / Abbruch des Imports nicht gewährleistet, dass Logdateien erstellt werden. In Dateinamen FILE können folgende Variablen verwendet werden: %y Jahr, %m Monat, %d Tag, %H Stunde, %i Min, %s Sek %db Datenbank, %id VorlagenID Bitte beachten, dass % in Batch Dateien zu %% gewandelt werden müssen. Beispiel 1 JTL-wawi-ameise.exe -s (local)\JTLWAWI -d eazybusiness -u sa -p sa04jT14 -t IMP3 -i import.csv Beispiel 2 JTL-wawi-ameise.exe server=(local)\JTLWAWI --database=eazybusiness --dbuser=sa --dbpass=sa04jT14 --templateid=IMP5 --inputfile=import.csv --log="bericht_%db_%y%m%d-%H%i%s.txt" Weitere Dokumentation siehe http://guide.jtl-software.de/
 

zwitsch

Sehr aktives Mitglied
14. November 2007
425
38
Meine Programmierumgebung ist Clarion for Windows.

ImportID enthält die ID eines definierten Imports für die Ameise. Muss also vorher erstellt werden, kann aber immer wieder aufgerufen werden. Importdefinitionen lassen sich exportieren und importieren. Können also zu einem Kunden geschickt werden, falls hier Bedarf besteht.

PROGPATH enthält den Pfad der JTL-Wawi (und Ameise), SERVER enthält den SQL-Servernamen

Parameter1 enthält die Datenbank, User und Passwort
Parameter1 = ' -d ' & Datenbank & ' -u ' & Name & ' -p ' & Passwort

Mit der Datei Protokoll. LOG kann man Informationen bzw. Fehler beim Import erkennen, darstellen und darauf reagieren.

SetClipboard schreibt den Ameisenaufruf in die Zwischenablage. Kann man gut verwenden während der Entwicklungsphase, um diesen Befehl manuell per BAT-Datei auszuprobieren.

vuRun(LOC:AufrufAmeise, 0, 1) startet dann die Ameise. Der User bekommt davon nichts mit; also keine Bildschirmaktivitäten.

LOC:AufrufAmeise: diese Anweisung muss in einer Zeile stehen

!Daten für JTL-Ameise vorbereiten
IF LEN(CLIP(LOC:IMPORTID)) > 0
LOC:AufrufAmeise = PROGPATH & 'JTL-wawi-ameise.exe -s ' & SERVER &|
Parameter1 & ' -t ' & IMPORTID & ' -i ' &|
& ImportFile & ' --loglevel=1 --log=Protokoll.LOG &|
--log_warnings=Protokoll.LOG &|
--log_imported=Protokoll.LOG &|
--log_updated=Protokoll.LOG &|
--log_errors=Protokoll.LOG &|
--nostdout'
!LogFile kopieren
COPY('Protokoll.LOG', GLO:LogFileAmeise)

SetClipboard(LOC:AufrufAmeise)

IF vuRun(LOC:AufrufAmeise, 0, 1) = FALSE
MESSAGE('Fehler beim Aufruf der Ameise', 'Importfehler') !RUNCODE())
ELSE.........
 
  • Gefällt mir
Reaktionen: Horus Sirius

Tobi_G

Neues Mitglied
17. Dezember 2019
18
5
Sehr Schade.
Könnte man nicht die Funktion der JTL Ameise in JTLwawiExtern.dll übernehmen, dann könnte man Export und Import technisch wirklich alles.

Wie vielleicht auch bei dir schon mehrfach erwähnt wurde, ist es verständlicherweise keine gute Idee die Datenbank direkt anzusprechen, aufgrund zahlreicher Abhängigkeiten und
meiner Meinung nach auch einem etwas uneinheitlichem Design der Datenbank.
(manche Proceduren sind auf englisch, manche auf Deutsch und es werden 3 verschiedene Methoden benutzt die primary keys zu managen obwohl ich keine Notwendigkeit für überhaupt eine der drei sehe)

Ich glaube zudem, dass die Extern.dll nichts anderes macht als auf die stored procedures zurückzugreifen, nur eben etwas schöner und einheitlicher. (Beide bieten die Möglichkeiten XML Daten als Parameter zu übergeben).
Aber darüber hinaus laufen noch einige weitere SQL Statements ab vor und nach dem sp_KundeInsert.

Deshalb, falls du einen einfachen Import in JTL machen möchtest, dann kann ich dir auch nur die Ameise empfehlen, aufgerufen über die Kommandozeile. Das ist das Importwerkzeug erster Wahl.
 

charms.johannsson.de

Gut bekanntes Mitglied
31. Dezember 2008
200
3
Rendsburg
Ich stehe vor einem ähnlichem Problem und möchte einen Kunden uber die spKundeInsert zufügen

mir ist die "kInternalId" nicht klar
wenn ich die SP mit unten stehendem Code ausführe kommt die Meldung:

(1 Zeile betroffen)
Die spAdresseInsert-Prozedur hat versucht, den Status NULL zurückzugeben. Dies ist nicht zulässig. Stattdessen wird der Status 0 zurückgegeben.

und es wird kein Adressdatendatz angelegt ?

SQL:
DECLARE @Kunde AS TYPE_spkundeInsert;
                INSERT INTO @Kunde (
                     kInternalId ,
                     kInetKunde ,
                     kKundenKategorie ,
                     cKundenNr ,
                     cFirma ,
                     cAnrede ,
                     cTitel ,
                     cVorname ,
                     cName ,
                     cStrasse ,
                     cPLZ ,
                     cOrt ,
                     cLand ,
                     cTel ,
                     cFax ,
                     cEMail ,
                     dErstellt ,
                     cMobil ,
                     fRabatt ,
                     cUSTID ,
                     cNewsletter ,
                     cZusatz ,
                     cEbayName ,
                     kBuyer ,
                     cAdressZusatz ,
                     cGeburtstag ,
                     cWWW ,
                     cSperre ,
                     cPostID ,
                     kKundenGruppe ,
                     nDrittland ,
                     nZahlungsziel ,
                     kSprache ,
                     cISO ,
                     cBundesland ,
                     cHerkunft ,
                     cKassenKunde ,
                     cHRNr ,
                     kZahlungsart ,
                     nDebitorennr ,
                     cSteuerNr ,
                     nKreditlimit ,
                     kKundenDrucktext ,
                     nMahnstopp ,
                     nMahnrhythmus ,
                     kFirma ,
                     fProvision ,
                     nVertreter ,
                     fSkonto ,
                     nSkontoInTagen ) values (1,0,0,'R10000','','','','Test99','Test99','Test99 ','0','','Deutschland','','','',GetDate(),'',0,'','','','',0,'','','','','',3,0,0,1,'DE','','Rep','Y','',0,0,'',0,0,0,0,0,0,0,0, 0)

                     EXEC Kunde.spKundeInsert @Daten = @Kunde;
 
Ähnliche Themen
Titel Forum Antworten Datum
Kundenstammdaten: Wie erkenne ich in der Wawi, ob ein Shop-Kunde ein Kundenkonto angelegt hat? JTL-Wawi 1.9 2
Neu Filter Kunde mit eigenem Feld Wert "größer als"? User helfen Usern - Fragen zu JTL-Wawi 3
Neu Download-Datei soll nach Registrierung als Kunde im Kundenaccount freigeschaltet werden Allgemeine Fragen zu JTL-Shop 2
Neu JTL PayPal Checkout 5.3.0 mit Shop 5.5.2 - Artikel nur sichtbar wenn Kunde eingeloggt ist oder Artikel nicht verfügbar ist Plugins für JTL-Shop 6
Kunde haut mir die E-Rechnung um die Ohren. Länge des BT-131 sollte 2 Nachkommastellen haben JTL-Wawi 1.9 6
Neu Amazon vergibt Rabatte an Kunde und Kunde fehlt der Beleg bzw. Rechnung zu hoch Amazon-Anbindung - Fehler und Bugs 0
Neu WF Kunde über Weiterleitung in Filiale benachrichtigen User helfen Usern - Fragen zu JTL-Wawi 2
Neu "Ist Standard Dropshipping Lieferant" per Ameise exportieren User helfen Usern - Fragen zu JTL-Wawi 5
XML Auftragsimport per Workflow bediinen JTL-Wawi 1.8 1
neue Zahlungsart "Barter", trotzdem erscheint "Zahlung per Überweisung und QR-Code" JTL-Wawi 1.10 1
Neu Die Leiferantendaten bei Artikelstammdaten lassen sich per Ameise nicht ändern User helfen Usern - Fragen zu JTL-Wawi 6
Neu Rechnungsversand per Mail ohne Auslieferprozess Arbeitsabläufe in JTL-Wawi 3
Neu Kategorien per Ameise importieren Schnittstellen Import / Export 8
Neu Auslesen Bestand per Lager für Workflow zur Anzeige im Onlineshop User helfen Usern - Fragen zu JTL-Wawi 4
Neu doppelt Teilliefern per WMS Arbeitsabläufe in JTL-Wawi 0
Neu Versandetikett bei Dropshipping per E-Mail mitsenden Arbeitsabläufe in JTL-Wawi 12
Vorschaubild in Kategorieansicht per Hover durch Video oder GIF ersetzen Allgemeine Fragen zu JTL-Shop 2
Ebay Angebot mit Kindartikel die keinen Bestand haben per Ameise importieren JTL-Wawi 1.6 5
In Diskussion Externe E-Mail mit Auftragsdaten per Workflow erzeugen JTL-Workflows - Fehler und Bugs 10
Neu Lieferantenbestellung per CSV Import mit Ameise Artikel VPE JTL-Ameise - Fehler und Bugs 0
Neu howto: "Rabatte irgnorieren" für einen Artikel per Ameise importieren, so dass in einem angeschlossenen POS dieser Artikel keine Rabatte bekommt User helfen Usern - Fragen zu JTL-Wawi 11
Seit Update 1.10.12.0 – Keine Rechnungserstellung per Workflow bei FBA-Aufträgen JTL-Wawi 1.10 3
Neu PayPal Rechnung per Ratepay leitet immer auf Adresseingabeseite zurück Plugins für JTL-Shop 5
Neu Kategorie Beschreibung per Ameise ändern Betrieb / Pflege von JTL-Shop 9
In Diskussion Per Workflow aktuelle Kategorie als Attribut hinterlegen JTL-Workflows - Ideen, Lob und Kritik 5
Bestellung kann nicht per Mail verschickt werden JTL-Wawi 1.10 1
Neu Unicorn2 - Marcos Software Internetseite alle weg? Läuft das Projekt noch? Schnittstellen Import / Export 4
Neu Neue Software: Workflows exportieren und importieren in JTL (WCopy4jtl) [WAWI-36174] Arbeitsabläufe in JTL-Wawi 4

Ähnliche Themen