Gelöst Komplett Abgleich: Property Combination->price is not valid

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Hallo,

Ich verwende die neueste Connector Version 1.4.5 und Presta 1.6.1.9.
Ich habe ca. 70 Kategorien, 100 Hersteller, 1000 Hauptartikel und 3000 Varcombis per Ameise in JTL Wawi importiert und versuche diese in Presta hochzuladen.

Dabei kommt es zur Exception:
Exception: /homepages/10/xxxxxxxxx/htdocs/prestashop_dev/classes/ObjectModel.php (909):property Combination->price is not valid

Der PHP code, der die Exception auslöst ist in /classes/Combination.php (76):

'price' => array('type' => self::TYPE_FLOAT, ' shop' => true, 'validate' => 'isNegativePrice', 'size' => 20),


Wie finde ich den kritischen Datensatz?

In dem Connector Log file befindet sich für jeden Artikel und damit verbundene Varcombis ein JSON object.

Preisdaten scheinen für Hauptartikel per Kundengruppe übermittelt zu werden (netPrice):


Code:
"customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7143
            }
Bei Varcombis als Differenz (extraChargeNet):

Code:
"variations": [
        {
          "type": "select",
          "i18ns": [
            {
              "productVariationId": [
                "",
                19
              ],
              "languageISO": "ger",
              "name": "Farbe"
            }
          ],
          "invisibilities": [],
          "values": [
            {
              "extraCharges": [
                {
                  "customerGroupId": [
                    "",
                    0
                  ],
                  "productVariationValueId": [
                    "",
                    42
                  ],
                  "extraChargeNet": 0.0
                }

Der zuletzt gesendete Artikel sieht im Log file und in der Wawi unkritisch aus, also keine negativen Preise oder mehr als 20 Stellen.
 

daniel.jtl

Moderator
12. März 2014
1.277
28
Ja, du hast den Fehler ja prinzipiell schon recht gut eingegrenzt.
Die extraCharges bei den variations sind für dich allerdings irrelevant, da Presta ausschließlich mit Varkombis arbeitet.
In dem Fall stehen in diesem Datentyp lediglich die möglichen Variationswerte einer Kombination, der Preis kommt jedoch direkt vom übergeordneten Product.

Wo genau der Fehler auftritt muss man natürlich suchen. Irgendwo ist halt ein Preis der der Presta-Validator nicht gefällt.
Um die Suche einfacher zu machen, kann man natürlich in den Connector-Einstellungen testweise die Block-Größe etwas niedriger machen und vorher die Logs nochmal bereinigen.
Dann hat man ein frisches Log mit einer etwas überschaubaren Datenmenge.
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
So, ich habe nun die Werte für netPrice überprüft, habe aber keine negativen Werte oder Zahlen mit mehr als 20 Stellen gefunden. Der längste Wert im Log file ist 1385.7142333984375 und hat 18 Stellen inklusive Trennzeichen.

Die Blockgröße habe ich auf 1 gesetzt, also sollte nach meinem Verständnis der fehlerhafte Datensatz der letzte sein und da finde ich nur "netPrice": 1385.7143.
Es handelt sich um den Artikel 'Prijon Seayak Classic 1er Kajak, rot' mit SKU 12035-001


Weiter sind mir 2 Dinge aufgefallen:
  • in Presta wurde die Attribute Gruppe 'Farbe' angelegt, aber diese enthält nur leere Werte.
  • Der Vaterartikel 'Prijon Seayak Classic 1er Kajak' mit SKU 12035 existiert Presta 10 mal.


Deshalb nochmal zurück auf Start:

  1. Presta DB: TRUNCATE TABLE `jtl_connector_link`
  2. Presta Cleaner modul: Katalog löschen
  3. JTL Onlineshop Anbindung: Onlineshopdaten zurücksetzen
  4. Komplettabgleich: Alles, speichern
  5. Onlineshop-Abgleich: starten

Ergebnis:
Gleicher Fehler wie zuvor für 'Prijon Seayak Classic 1er Kajak, rot' mit SKU 12035-001. Allerdings existiert der Vaterartikel nun nur einmal in Presta. Unter Attribute finden sich für Farbe wieder nur leere Werte .
 

Anhänge

  • Connector-Abgleich-Debug 20161219 14-57-02.zip
    148,9 KB · Aufrufe: 3

daniel.jtl

Moderator
12. März 2014
1.277
28
Dass die Attribute leer sind wenn zuvor ein Fehler auftrat ist klar, da diese erst nach dem Artikel angelegt werden.
Und bitte nur ein leeres Log machen nach dem Komplettabgleich. Also anschließend den vermeintlich betroffenen Artikel einmal irgendwie ändern und neu abgleichen.
So dass ausschließlich die Produktdaten dieses einen Datensatzes im Log stehen. In über 47000 Zeilen Log-Datei kann man ja unmöglich irgendwas sinnvoll rauslesen...
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Danke für den Tip. Ich hab den Artikel, sowie seinen Vaterartikel geändert (Bestand und Meta-Descr.) und dann den Abgleich nochmal ausgeführt. Es wurden 84 Artikel übertragen bis es zum Fehler kam.
Das Log file ist auf die letzte Übertragung gekürzt (connector_log-12035-001.txt).


So sehen bei mir die Attribute in Prestashop aus.

attributegruppen.png

Nachdem ich wie empfohlen den Artikel 12035-001 in JTL geändert habe (Bestand=1) und die Abgleich ausgeführt habe findet sich hier nun am Ende.
attributegruppen2.png

Ein Blick auf den betroffenen Artikel in Presta zeigt, dass die Variante eigentlich korrekt angelegt wurde (20 mal - 10 mal pro Abgleich ). Die Varianten dieses Artikels haben alle den gleichen Preis wie der Hauptartikel

varianten.png
Hier noch der Artikel in der Wawi:

wawi-12035.png
 

Anhänge

  • connector_log-12035-001.txt
    16,8 KB · Aufrufe: 1

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Was schlägst du also vor zu tun?

Was kann ich noch an Infos posten, die helfen das Problem zu isolieren?
 

daniel.jtl

Moderator
12. März 2014
1.277
28
Ja, es wäre sinnig da als nächstes Mal bei Presta anzufragen. Ob und wie man da Logfiles erstellt um Fehler deren API ausfindig zu machen weiß ich auch nicht.
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Ich habe nun den Grund gefunden. Dein ursprünglicher Tipp hat geholfen. Der Preis des Haupartikels ist das Problem:

1385.7142333984375 hat 14 Nachkommastellen. Der RegExp /^[-]?[0-9]{1,10}(\.[0-9]{1,9})?$/ . der in Presta geprüft wird erlaubt aber nur 10 Stellen nach dem Komma.

In der Presta DB sind dann wieder nur 6 Stellen nach dem Komma erlaubt...

Interessanterweise macht das bei den Hauptartikeln keine Probleme, nur bei den Varcombis kommt es zum Fehler.
Rundet der Presta Connector die Preise für die Hauptartikel?

Wie kam es dazu meiner Situtation?

Ich habe per Ameise Artikel importiert, bei denen die Preise 4 Nachkommastellen haben. JTL scheint beim import vom Brutto den Netto Preis mit maximaler Precission errechnet zu haben, was 14 Kommastellen bedeutet (in der JTL DB haben alle Artikel Preise dieses Format). 14 Kommastellen scheint also JTL intern die Norm zu sein.

In den Wawi Connector log files sehe ich, dass bei den Varcombis auf 4 Kommastellen gerundete Preise übertragen werden, während die die Hauptartikel die vollen 14 Stellen haben.

Ich sehe mehrere Möglichkeiten das zu Problem zu fixen:

Anpassen des Wawi Connectors, so dass die Preise der Hauptartikel auch auf 4 Kommastellen gerundet werden (kann nur von JTL gemacht werden, da ich den C# Code nicht habe)
Anpassen des Presta Connector, so dass bei der Berechnung der Preise für Varcombis gerundet wird (wo finde ich den Code dafür?)

Quick and Dirty:
Runden der Preise in der JTL DB per SQL (möglicherweise werden Bruttopreise dann nicht mehr korrekt berechnet)
Ändern des RegExp in Presta (möglicher Folgefehler und sonstige Seiteneffekte)
 

daniel.jtl

Moderator
12. März 2014
1.277
28
Ähm, bist du sicher dass du die letzte Version des Connectors hast und auch immer alle Dateien bei Updates korrekt überschrieben hast?
Ich hab nämlich gerade mal den Code angeguckt und festgestellt, dass der Connector schon seit über einem Jahr die Preise beim senden auf 6 Stellen rundet.
Ich würde eventuell erstmal versuchen den Connector komplett neu zu laden und zu installieren...
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Presta Connector laut version file: 1.4.5 (download 29. Nov 2016), wurde niemals upgedated.
Wawi Version laut setup file: setup-jtl-wawi_1.1.4.10_161117_50330.exe, JTL.Connector.dll hat version 1.1.4.10

Ich habe zwei Wawi Installationen (Win7 und Server 2012) und habe 2 Presta Instanzen (1.6.1.9 und 1.6.1.10), bei denen keine Module außer jtl-connector installiert wurden. Der Fehler tritt bei allen Kombis auf
 
Zuletzt bearbeitet:

daniel.jtl

Moderator
12. März 2014
1.277
28
Ja, dann kann ich es mir leider nicht wirklich erklären. Alle Preise werden beim senden auf 6 Stellen gerundet, das gilt auch für Varkombis und sogar Sonderpreise.
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Bitte schau dir im Code nochmal den Teil für die Hauptartikel an und ob die DLL im setup Paket wirklich die neuesten Code enthält.

Hier nochmal die Logs.


Das ist die Varcombi und der Preis wird gerundet

Code:
  "method": "product.push",
  "params": [
    {
      "entityType": "Product",
      "categories": [
        {
          "id": [
            "",
            620
          ],
          "productId": [
            "",
            847
          ],
          "categoryId": [
            "",
            156
          ]
        }
      ],
      "configGroups": [],
      "fileDownloads": [],
      "i18ns": [
        {
          "measurementUnitName": null,
          "unitName": "Stk",
          "deliveryStatus": "0 Tage",
          "productId": [
            "",
            847
          ],
          "languageISO": "ger",
          "name": "Prijon Seayak Classic 1er Kajak, rot",
          "description": "",
          "shortDescription": "",
          "urlPath": "",
          "metaDescription": "",
          "titleTag": "",
          "metaKeywords": ""
        }
      ],
      "invisibilities": [],
      "mediaFiles": [],
      "prices": [
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7143
            }
          ],
          "customerGroupId": [
            "3",
            1
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            847
          ]
        },
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7143
            }
          ],
          "customerGroupId": [
            "1",
            3
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            847
          ]
        },
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7143
            }
          ],
          "customerGroupId": [
            "2",
            4
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            847
          ]
        },
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7143
            }
          ],
          "customerGroupId": [
            "",
            0
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            847
          ]
        }
      ],
      "partsLists": [],
      "attributes": [],
      "specialPrices": [],
      "specifics": [],
      "warehouseInfo": [],
      "variations": [
        {
          "type": "select",
          "i18ns": [
            {
              "productVariationId": [
                "",
                19
              ],
              "languageISO": "ger",
              "name": "Farbe"
            }
          ],
          "invisibilities": [],
          "values": [
            {
              "extraCharges": [
                {
                  "customerGroupId": [
                    "",
                    0
                  ],
                  "productVariationValueId": [
                    "",
                    42
                  ],
                  "extraChargeNet": 0.0
                }
              ],
              "i18ns": [
                {
                  "productVariationValueId": [
                    "",
                    42
                  ],
                  "languageISO": "ger",
                  "name": "rot"
                }
              ],
              "invisibilities": [],
              "id": [
                "",
                42
              ],
              "productVariationId": [
                "",
                19
              ],
              "extraWeight": 0.0,
              "sku": "",
              "sort": 1,
              "stockLevel": 0.0,
              "ean": ""
            }
          ],
          "id": [
            "",
            19
          ],
          "productId": [
            "",
            68
          ],
          "sort": 0
        }
      ],
      "checksums": [
        {
          "type": 1,
          "host": "36fda3c3287ae172a802a0acc17900b943c94f3e",
          "endpoint": "",
          "hasChanged": false,
          "foreignKey": [
            "",
            847
          ]
        }
      ],
      "varCombinations": [],
      "customerGroupPackagingQuantities": [],
      "stockLevel": {
        "productId": [
          "",
          847
        ],
        "stockLevel": 1.0
      },
      "supplierStockLevel": 0.0,
      "vat": 19.0,
      "basePriceFactor": 0.0,
      "supplierDeliveryTime": 0,
      "measurementUnitCode": "",
      "basePriceUnitCode": "",
      "basePriceUnitName": "",
      "minBestBeforeDate": null,
      "id": [
        "",
        847
      ],
      "sku": "12035-001",
      "recommendedRetailPrice": 0.0,
      "note": "",
      "isActive": true,
      "minimumOrderQuantity": 0.0,
      "ean": "",
      "isTopProduct": false,
      "shippingWeight": 0.0,
      "isNewProduct": false,
      "isSerialNumber": false,
      "isDivisible": false,
      "considerStock": true,
      "permitNegativeStock": false,
      "minimumQuantity": 0.0,
      "purchasePrice": 0.0,
      "considerVariationStock": false,
      "modified": "2016-12-19T16:27:18Z",
      "considerBasePrice": false,
      "basePriceDivisor": 0.0,
      "keywords": "",
      "taric": "0",
      "originCountry": "",
      "creationDate": "2016-12-12T06:56:39Z",
      "availableFrom": null,
      "sort": 0,
      "shippingClassId": [
        "",
        1
      ],
      "productWeight": 0.0,
      "manufacturerNumber": "",
      "serialNumber": "",
      "isbn": "",
      "unNumber": "",
      "hazardIdNumber": "",
      "asin": "",
      "masterProductId": [
        "",
        68
      ],
      "isMasterProduct": false,
      "packagingQuantity": 0.0,
      "partsListId": [
        "",
        0
      ],
      "upc": "",
      "productTypeId": [
        "",
        0
      ],
      "epid": "",
      "isBestBefore": false,
      "isBatch": false,
      "manufacturerId": [
        "",
        0
      ],
      "measurementUnitId": [
        "",
        0
      ],
      "measurementQuantity": 0.0,
      "basePriceUnitId": [
        "",
        0
      ],
      "basePriceQuantity": 0.0,
      "width": 0.0,
      "height": 0.0,
      "length": 0.0,
      "unitId": [
        "",
        1
      ],
      "nextAvailableInflowDate": null,
      "nextAvailableInflowQuantity": 0.0
    }
  ],
  "jtlrpc": "2.0",
  "id": "bd2c70e16ce64e919ebc71532a83eca6"
}
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Hier ist der Hauptartikel, der Preis wird nicht gerundet. Das ist das Problem

Code:
>>> product.push: {
  "method": "product.push",
  "params": [
    {
      "entityType": "Product",
      "categories": [
        {
          "id": [
            "",
            620
          ],
          "productId": [
            "",
            68
          ],
          "categoryId": [
            "",
            156
          ]
        }
      ],
      "configGroups": [],
      "fileDownloads": [],
      "i18ns": [
        {
          "measurementUnitName": null,
          "unitName": "Stk",
          "deliveryStatus": "0 Tage",
          "productId": [
            "",
            68
          ],
          "languageISO": "ger",
          "name": "Prijon Seayak Classic 1er Kajak",
         
          "shortDescription": "Der Prijon Seayak steht bei uns seit vielen Jahren für schnelle, attraktive Kajaks mit sicheren und beherrschbaren Fahreigenschaften.",
          "urlPath": "",
          "metaDescription": "Prijon Seayak Classic 1er Seekajak, Kajak, Einerkajak, Wanderkajak, Tourenkajak,  Allroundkajak, Tourenboot, schneller einer, Allround-Wanderkajak",
          "titleTag": "Prijon Seayak Classic 1er Seekajak",
          "metaKeywords": "Prijon Seayak Classic 1er Seekajak, Kajak, Einerkajak, Wanderkajak, Tourenkajak,  Allroundkajak, Tourenboot, schneller einer, Allround-Wanderkajak "
        }
      ],
      "invisibilities": [],
      "mediaFiles": [],
      "prices": [
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7142333984375
            }
          ],
          "customerGroupId": [
            "3",
            1
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            68
          ]
        },
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7142333984375
            }
          ],
          "customerGroupId": [
            "1",
            3
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            68
          ]
        },
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7142333984375
            }
          ],
          "customerGroupId": [
            "2",
            4
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            68
          ]
        },
        {
          "customerId": [
            "",
            0
          ],
          "items": [
            {
              "productPriceId": [
                "",
                0
              ],
              "quantity": 0,
              "netPrice": 1385.7142333984375
            }
          ],
          "customerGroupId": [
            "",
            0
          ],
          "id": [
            "",
            0
          ],
          "productId": [
            "",
            68
          ]
        }
      ],
      "partsLists": [],
      "attributes": [],
      "specialPrices": [],
      "specifics": [],
      "warehouseInfo": [],
      "variations": [
        {
          "type": "select",
          "i18ns": [
            {
              "productVariationId": [
                "",
                19
              ],
              "languageISO": "ger",
              "name": "Farbe"
            }
          ],
          "invisibilities": [],
          "values": [
            {
              "extraCharges": [
                {
                  "customerGroupId": [
                    "",
                    0
                  ],
                  "productVariationValueId": [
                    "",
                    44
                  ],
                  "extraChargeNet": 0.0
                }
              ],
              "i18ns": [
                {
                  "productVariationValueId": [
                    "",
                    44
                  ],
                  "languageISO": "ger",
                  "name": "blau"
                }
              ],
              "invisibilities": [],
              "id": [
                "",
                44
              ],
              "productVariationId": [
                "",
                19
              ],
              "extraWeight": 0.0,
              "sku": "",
              "sort": 1,
              "stockLevel": 0.0,
              "ean": ""
            },
            {
              "extraCharges": [
                {
                  "customerGroupId": [
                    "",
                    0
                  ],
                  "productVariationValueId": [
                    "",
                    43
                  ],
                  "extraChargeNet": 0.0
                }
              ],
              "i18ns": [
                {
                  "productVariationValueId": [
                    "",
                    43
                  ],
                  "languageISO": "ger",
                  "name": "gelb"
                }
              ],
              "invisibilities": [],
              "id": [
                "",
                43
              ],
              "productVariationId": [
                "",
                19
              ],
              "extraWeight": 0.0,
              "sku": "",
              "sort": 1,
              "stockLevel": 0.0,
              "ean": ""
            },
            {
              "extraCharges": [
                {
                  "customerGroupId": [
                    "",
                    0
                  ],
                  "productVariationValueId": [
                    "",
                    42
                  ],
                  "extraChargeNet": 0.0
                }
              ],
              "i18ns": [
                {
                  "productVariationValueId": [
                    "",
                    42
                  ],
                  "languageISO": "ger",
                  "name": "rot"
                }
              ],
              "invisibilities": [],
              "id": [
                "",
                42
              ],
              "productVariationId": [
                "",
                19
              ],
              "extraWeight": 0.0,
              "sku": "",
              "sort": 1,
              "stockLevel": 0.0,
              "ean": ""
            }
          ],
          "id": [
            "",
            19
          ],
          "productId": [
            "",
            68
          ],
          "sort": 0
        }
      ],
      "checksums": [
        {
          "type": 1,
          "host": "a90323e694537081480a156f685b62c637a2aebb",
          "endpoint": "",
          "hasChanged": false,
          "foreignKey": [
            "",
            68
          ]
        }
      ],
      "varCombinations": [],
      "customerGroupPackagingQuantities": [],
      "stockLevel": {
        "productId": [
          "",
          68
        ],
        "stockLevel": 1.0
      },
      "supplierStockLevel": 0.0,
      "vat": 19.0,
      "basePriceFactor": 0.0,
      "supplierDeliveryTime": 0,
      "measurementUnitCode": "",
      "basePriceUnitCode": "",
      "basePriceUnitName": "",
      "minBestBeforeDate": null,
      "id": [
        "",
        68
      ],
      "sku": "12035",
      "recommendedRetailPrice": 0.0,
      "note": "",
      "isActive": true,
      "minimumOrderQuantity": 0.0,
      "ean": "",
      "isTopProduct": false,
      "shippingWeight": 0.0,
      "isNewProduct": false,
      "isSerialNumber": false,
      "isDivisible": false,
      "considerStock": true,
      "permitNegativeStock": false,
      "minimumQuantity": 0.0,
      "purchasePrice": 0.0,
      "considerVariationStock": false,
      "modified": "2016-12-20T19:28:32Z",
      "considerBasePrice": false,
      "basePriceDivisor": 0.0,
      "keywords": "Prijon Seayak Classic 1er Seekajak, Kajak, Einerkajak, Wanderkajak, Tourenkajak,  Allroundkajak, Tourenboot, schneller einer, Allround-Wanderkajak",
      "taric": "0",
      "originCountry": "",
      "creationDate": "2016-12-09T10:24:15Z",
      "availableFrom": null,
      "sort": 0,
      "shippingClassId": [
        "",
        1
      ],
      "productWeight": 0.0,
      "manufacturerNumber": "",
      "serialNumber": "",
      "isbn": "",
      "unNumber": "",
      "hazardIdNumber": "",
      "asin": "",
      "masterProductId": [
        "",
        0
      ],
      "isMasterProduct": true,
      "packagingQuantity": 0.0,
      "partsListId": [
        "",
        0
      ],
      "upc": "",
      "productTypeId": [
        "",
        0
      ],
      "epid": "",
      "isBestBefore": false,
      "isBatch": false,
      "manufacturerId": [
        "",
        3
      ],
      "measurementUnitId": [
        "",
        0
      ],
      "measurementQuantity": 0.0,
      "basePriceUnitId": [
        "",
        0
      ],
      "basePriceQuantity": 0.0,
      "width": 0.0,
      "height": 0.0,
      "length": 0.0,
      "unitId": [
        "",
        1
      ],
      "nextAvailableInflowDate": null,
      "nextAvailableInflowQuantity": 0.0
    }
  ],
  "jtlrpc": "2.0",
  "id": "43604015ce7b423c950888785a95732f"
}
 

daniel.jtl

Moderator
12. März 2014
1.277
28
Auf die Daten die von der Wawi kommen habe ich keinen Einfluss, ich beziehe mich hier nur auf den shopseitigen Teil.
Was im Log steht ist also zunächst irrelevant: Der Connector im Shop rundet die Preise der Wawi, bevor diese in die Datenbank geschrieben werden.
Selbst wenn die Wawi also 100 Stellen schicken würde, würde der Connector die erst Mal auf 6 Stellen runden.
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Sorry, dann hatte ich das falsch verstanden.


Das runden findet also auf PHP Seite statt?
In welcher Datei ist der Code?
In der connector phar unter src/jtl/Connector/Controller/Product.php Zeile 199 geht es um Preise, da ist bei mir keine Rundung.
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Ich habe möglicherweise etwas gefunden:

In der connector.phar unter src/jtl/Connector/Controller/ProductPrice.php Zeile 162 ist kein round()

Code:
$combiPriceDiff = $item->getNetPrice() - floatval($product->price);

Leider kann ich in Netbeans die .phar Dateien nicht editieren, sonst würde ich es gleich testen
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Moin Daniel,

Ich habe nun endlich die Lösung gefunden.

Hintergrund ist, dass die Preise der Varcombis von der Wawi zu Presta mit 4 Stellen gesendet werden, während die Hauptartikel mit 14 Stellen gesendet werden.

Der Preis des Haupartikels wird dann in ProductPrice.php auf 6 Stellen gerundet und so in Presta gespeichert.

Bei meinem Testartikel haben alle Varcombis den gleichen Preis wie der Haupartikel. Beim Berechnen der Differenz kommt es aber zum Fehler:

1385.7143 - 1385.714233 = 0.000067 anstatt 0.0. Das führt dann zur Exception.

Das Problem kommt von den Daten selber und rührt daher, dass für die Hauptartikel brutto und netto Preise (+Steuersatz) und für die Varcombis nur netto Preise importiert wurden.

Dabei wurde für Hauptartikel der netto Preis von JTL 14 stellig aus dem brutto berechnet, während bei Varcombis der 4 stellige Wert aus den CSV Dateien übernommen wurde.

Ich habe das nun in der JTL DB per SQL korrigiert, so dass alle Preise 14 Nachkommastellen haben und der Abgleich funktioniert nun.

Code:
update [eazybusiness].[dbo].[tArtikel]
      set [fVKNetto] =
      case when [kSteuerklasse]=1 then round(round([fVKNetto] * 1.19,2)/1.19,14)
      when [kSteuerklasse]=2 then round(round([fVKNetto] * 1.07,2)/1.07,14)
      end;
 

daniel.jtl

Moderator
12. März 2014
1.277
28
Naja, das erklärt das Problem aber doch immer noch nicht wirklich?
Also die Zeile die du in deinem vorletzten Beitrag angegeben hast ist ja irrelevant, da dort ja nur der Wert berechnet wird.
Da wo er eingetragen wird, also 2 zeilen darunter, wird dann aber ja auch wieder vorher gerundet.
 

Kanatu

Aktives Mitglied
14. Dezember 2016
47
2
Ich habe gestern Abend noch deinen Code geändert, so dass überall auf 4 Stellen gerundet wurde. Dann lieft es auch.

Klar ist, dass es die Differenz 0.0 sein sollte, aber 0.000067 war.

PHP:
 if (empty($customerGroupId)) {
                        $product = new \Product($productId);
                        if (empty($combiId)) {
                            $product->price = round($item->getNetprice(), 4);
                            Logger::write('Product price: '.sprintf('%f',  $combi->price), Logger::DEBUG, 'price');
                            $product->update();
                        } else {
                            $combiPriceDiff = $item->getNetPrice() - floatval($product->price);
                            $combi = new \Combination($combiId);
                            $combi->price = round($combiPriceDiff, 4);
                            Logger::write('Combination price: '.sprintf('%f',  $combi->price), Logger::DEBUG, 'price');
                            $combi->save();
                        }
                    }

Eigentlich entspricht das auch dem RegExp, sollte keine Exception geben. Tat es aber.

Aber dann ist mir aufgefallen, dass 1385.714233 gerundet 1385.7142 ergibt und nicht 1385.7143.

Ein Blick in die CSV Dateie hat dann klar gemacht wo 1385.7143 herkommt.

Also am Connector lag es nicht. Alles gut.

Wenn man ein Problem sehen will, dann ist es in der Doku der Ameise.

In dem How-To Artikel über Varcombis könntet ihr davor warnen den gleichen Fehler zu machen.

In dem Beispiel dort werden auch nur Netto Preise importiert.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu JTL Shop und WAWI komplett testen vor Shop-Release Gelöste Themen in diesem Bereich 8
Beantwortet Teillieferung -> Menge - Wenn komplett geliefert -> Menge Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 0
JTL Worker Manueller Abgleich nicht möglich trotz deaktivierem Worker 2.0 JTL-Wawi 1.8 4
Worker 2.0 Abgleich dauert sehr lange JTL-Wawi 1.7 7
Fehler beim Rendering der Attribute bei SCX Abgleich kaufland.de - Anbindung (SCX) 1
Neu Kommentar verschwindet nach Wawi-Abgleich JTL-Shop - Fehler und Bugs 3
Onlineshop fehlt im Abgleich JTL-Wawi 1.6 1
Kein Abgleich zum Shop, ich komme nicht in Plattformen/Verkaufskanäle rein JTL-Wawi 1.8 3
Problem ebay Abgleich JTL-Wawi 1.8 4
In Diskussion Abgleich Wawi->Pos Allgemeine Fragen zu JTL-POS 7
Bug? Worker 2.0 - Shop Abgleich "Quicksync" ist kein Quicksync mehr - Paketgröße wird ignoriert JTL-Wawi 1.8 10
Neu Kurzbeschreibung wird nach dem letztem Shop-Abgleich nicht im Frontend angezeigt User helfen Usern - Fragen zu JTL-Wawi 0
Neu Shopify Connector Abgleich endet nicht Shopify-Connector 6
RLIMIT_NPROC is exceeded & fehler 503 beim Abgleich und beim Bestellabschluss Einrichtung JTL-Shop5 0
Abbruch bei Abgleich Shopware 6 mit JTL Wawi Shopware-Connector 0
Neu Abgleich Onlineshop PrestaShop-Connector 1
Neu Zahlungsmodul - AmazonPay Abgleich schlägt fehl JTL-Wawi - Fehler und Bugs 2
Neu Kein Abgleich möglich-PW in den Online Einstellungen falsch WooCommerce-Connector 0
Neu Kein Abgleich mit Shopware 5.7.7 mehr Shopware-Connector 0
Neu Abgleich bucht bestellte Artikel als Wareneingang Shopware-Connector 10
Neu Bestellstatus Abgleich "Refund" "Gutschrift" WooCommerce-Connector 3

Ähnliche Themen