Neu Transaktionsnummern werden nicht übertragen

alfapack

Aktives Mitglied
7. April 2017
29
0
Hi,

wir haben folgendes Problem:

WIr benutzen Shopware und JTL (mit Shopware Connector). Allerdings werden bei Zahlungen keine Transaktionsnummern übertragen (weder bei Paypal, noch bei Amazon Pay oder Sofort/klarna). Die Zahlungen werden an JTL geschickt, allerdings ohne die Transaktionsnummer. Diese müssen wir dann immer mühsam von Hand einfügen, was schon nervig ist. Ich bin mir sicher das es früher mal funktioniert hat. Ist es ein Bug oder eine Einstellungssache ?

Gruß
 

Marcus_Dr

Aktives Mitglied
5. März 2012
42
4
Das hatten wir auch, bei uns fehlte ein Trigger in der DB Tabelle s_orders.
Bei manchen Hostern kann der wohl nicht vom den DB Nutzer angelegt werden.
Mach einfach ein Ticket bei JTL auf, da wird dir schnell geholfen.
 

itbrockmann

Neues Mitglied
10. Oktober 2019
6
1
Schaumburg
Leider haben wir aktuell das gleiche Problem. Die Transaktionsnummer von Paypal wird nicht in die Wawi übertragen... das hat zur Folge das die Paypal Zahlungen nicht automatisch zugeordnet werden. Die Paypal Aufträge kommen zwar schon direkt als "bezahlt" in die Wawi, wir möchten aber gerne einen Überblick im Zahlungsmodul behalten.

Ich habe bereits die s_orders in der DB gecheckt:
Die Spalte transactionID ist gefüllt und die cleared Spalte steht auf dem Wert 12. Der Datenbankbenutzer hat auch Trigger Rechte.

Es muss noch ein anderes Problem vorliegen. Jemand eine Idee?
 

alfapack

Aktives Mitglied
7. April 2017
29
0
Haben das Problem leider immernoch. Der User hat auch Trigger Rechte. Wir tragen die Transaktionsnummern immer von Hand ein, ist aber bei einigen Hundert Bestellungen ziemlich zeitraubend und nervig.
 

Immanuel

Moderator
Mitarbeiter
24. August 2016
516
90
Hallo,

wie sieht eurer Trigger aus, wenn ihr ihn exportiert? Er müsste wie folgt aussehen:

SQL:
CREATE TRIGGER `jtl_connector_payment` AFTER UPDATE ON `s_order`
FOR EACH ROW BEGIN
    SET @paymentId = NULL, @transactionId = NULL;
    SELECT id, transactionID INTO @paymentId, @transactionId FROM jtl_connector_payment WHERE customerOrderId = NEW.id;
    IF LENGTH(NEW.transactionID) > 0 AND NEW.cleared = 12 AND (@paymentId IS NULL OR (@transactionId IS NOT NULL AND @transactionId != new.transactionID)) THEN
        DELETE FROM jtl_connector_payment WHERE customerOrderId = NEW.id;
        INSERT IGNORE INTO jtl_connector_payment VALUES (@paymentId, NEW.id, '', IF(new.cleareddate IS NULL, now(), new.cleareddate), '', NEW.invoice_amount, NEW.transactionID);
    END IF;
END
PS. Falls der obige Trigger mit eurem identisch ist, dann könnte man noch folgenden probieren:
SQL:
CREATE TRIGGER `jtl_connector_payment` AFTER UPDATE ON `s_order`
FOR EACH ROW BEGIN
    SET @paymentId = NULL, @transactionId = NULL;
    SELECT id, transactionID INTO @paymentId, @transactionId FROM jtl_connector_payment WHERE customerOrderId = NEW.id;
    IF LENGTH(NEW.transactionID) > 0 AND NEW.cleared = 12 AND (@paymentId IS NULL OR @transactionId != new.transactionID) THEN
        DELETE FROM jtl_connector_payment WHERE customerOrderId = NEW.id;
        INSERT IGNORE INTO jtl_connector_payment VALUES (@paymentId, NEW.id, '', IF(new.cleareddate IS NULL, now(), new.cleareddate), '', NEW.invoice_amount, NEW.transactionID);
    END IF;
END
 
Zuletzt bearbeitet:

itb_janbrockmann

Neues Mitglied
14. August 2019
18
2
Moin @Immanuel,

der Trigger sieht wie folgt aus

SQL:
CREATE TRIGGER `jtl_connector_payment` AFTER UPDATE ON `s_order` 
FOR EACH ROW BEGIN
    SET @paymentId = NULL, @transactionId = NULL;
    SELECT id, transactionID INTO @paymentId, @transactionId FROM jtl_connector_payment WHERE customerOrderId = NEW.id;
    IF LENGTH(NEW.transactionID) > 0 AND NEW.cleared = 12 AND (@paymentId IS NULL OR (@transactionId IS NOT NULL AND @transactionId != new.transactionID)) THEN
        DELETE FROM jtl_connector_payment WHERE customerOrderId = NEW.id;
        INSERT IGNORE INTO jtl_connector_payment VALUES (@paymentId, NEW.id, '', IF(new.cleareddate IS NULL, now(), new.cleareddate), '', NEW.invoice_amount, NEW.transactionID);
    END IF;
END
Warum sollen wir den Trigger ändern?
Die jtl_connector_payment wird doch korrekt mit den Transaction IDs befüllt?
 
Zuletzt bearbeitet: