Isu semasa mengedit pesanan dalam panel pentadbir Shopware apabila menambah diskaun tersuai
P粉811349112
2023-09-01 17:30:17
<p>Saya menulis diskaun troli beli-belah tersuai mengikut dokumentasi https://developer.shopware.com/docs/guides/plugins/plugins/checkout/cart/add-cart-discounts
Semuanya berfungsi dengan baik, apabila pelanggan menambah atau mengalih keluar produk daripada troli, diskaun dikira semula, tetapi apabila saya ingin mengedit pesanan ini dalam panel pentadbir, saya mendapat ralat: </p>
<blockquote>
<p>Pengecualian PHP yang tidak ditangkap ShopwareCoreCheckoutCartExceptionLineItemNotStackableException: "Item baris dengan pengecam 'CHEAPEST_ITEM_CART_DISCOUNT' tidak boleh disusun dan kuantiti tidak boleh diubah dalam /var/www/shop/vendor/shopware/core/ItemItem/Cart Line/LineItemItem/Cart Line. .php baris 233 {"Exception": "[Object](Shopware Core Checkout Cart Exception
LineItemNotStackableException (Kod: 0): Item baris dengan pengecam "CHEAPEST_ITEM_CART_DISCOUNT" tidak boleh disusun dan kuantiti tidak boleh diubah. di /var/www/shop/vendor/shopware/core/Checkout/Cart/LineItem/LineItem.php:233)"} []</p>
</blockquote>
<p>Saya "menyelesaikan" masalah ini dengan menambahkan semakan ini pada kod saya: </p>
<pre class="brush:php;toolbar:false;">if($behavior->mempunyaiPermission(self::SKIP_PROMOTION)){
$items = $original->getLineItems()->filterType(self::LINE_ITEM_TYPE);
foreach ($item sebagai $item) {
$toCalculate->add($item);
}
kembali;
}</pre>
<p>Sekarang, jika saya mengedit pesanan dalam panel pentadbir, ralat tidak muncul, tetapi diskaun tidak dikira lagi dan menogol "Lumpuhkan promosi automatik" tidak berfungsi. </p>
<p>Adakah terdapat sebarang penyelesaian untuk mengira semula diskaun tersuai secara berurutan pada operasi edit?
Apabila saya menambah pesanan baru dalam panel pentadbir semuanya berfungsi dengan baik, masalahnya hanya dengan penyuntingan.
Dokumentasi tidak mengatakan apa-apa tentang perkara ini. </p>
Cari jika diskaun telah ditambahkan pada troli dengan pengecam rujukan. Jika ya, hanya alih keluar contoh lama daripada troli anda dan tambahkan diskaun yang dikira semula.
Selain itu, anda juga mesti memastikan bahawa pemproses anda dilaksanakan selepas Shopware sendiri
PromotionProcessor
, jika tidak ia akan cuba menambah semula diskaun yang anda tambahkan secara manual sebelum ini.Saya mencipta contoh pemalam yang mengandungi semua perubahan dalam panduan yang diperlukan untuk mengira semula. Dalam calon keluaran semasa
6.5
上进行了测试,但也应该适用于最新版本的6.4
.Contoh ini adalah berdasarkan diskaun sebagai peratusan nilai troli. Jika diskaun sepatutnya menjadi nilai mutlak perubahan, prosesnya sedikit berbeza. Saya membuat garpu dalam repositori di atas dan memberikan contoh.