Saya mencoba beberapa cuplikan yang ditemukan secara online tetapi tidak berhasil.
Hanya mencoba untuk menetapkan suatu produk dalam stok / kehabisan stok dengan kode, ini sejauh yang saya dapatkan:
$product = Mage::getModel('catalog/product')->load( 'id' );
$stockItem = $product->getStockItem();
$stockItem->setData('manage_stock', 1);
$stockItem->setData('is_in_stock', 0);
$stockItem->setData('use_config_notify_stock_qty', 0);
$stockItem->setData('qty', 0);
$stockItem->save();
$product->save();
Itu tidak membuat perubahan pada informasi produk ketika dilihat melalui panel admin, ada ide?
inventory
ce-1.6.2.0
Mike
sumber
sumber
Jawaban:
Coba ini sebagai gantinya:
lalu atur dan simpan perubahan Anda seperti sebelumnya.
sumber
Coba yang berikut ini. Anda tidak harus memuat objek stok baru
Dan simpan saja produk seperti yang Anda lakukan dalam skrip Anda
sumber
Saya memiliki masalah yang sama tetapi dengan perbedaan bahwa tidak ada objek stok barang untuk produk tertentu. Ketika ini terjadi, ada baiknya untuk membuat objek stok barang awalnya sebelum menetapkan kuantitas (kecuali ada cara untuk mereka pada saat yang sama).
sumber
$product->save();
- apakah diperlukan setelah menabung$stockItem
?mencoba magento 1.8.1.0 CE dan tidak dapat menyimpan "qty" karena nilai "type_id" yang hilang (untuk item baru). dipecahkan oleh
sumber
Sebagai tambahan untuk semua jawaban, mungkin ide yang baik untuk digunakan
addData
alih-alihsetData
aman untuk memperbarui informasi dan tidak hanya menyetelnya.sumber
Saya ingin menyarankan perubahan pada jawaban Raj untuk mendukung situasi aneh. Agar jawaban untuk bekerja saya harus mengomentari pernyataan if, karena produk yang dibuat secara terprogram dapat memiliki data stok parsial, namun tidak lengkap. Ini adalah satu-satunya cara saya bisa membuatnya bekerja.
sumber
Inilah kemungkinan penyebab yang menghabiskan waktu sekitar 2 jam kerja: Saya sudah mencoba ini sejak lama bertanya-tanya mengapa itu tidak menghemat. Saya memiliki
exit;
pernyataan php setelah->save()
dan banyak gema sehingga tidak akan pindah ke layar berikutnya secara otomatis (untuk membantu debug).Namun komit ke database harus terjadi terlambat pada halaman memuat itu tidak akan menyelamatkan saya sampai saya menghapus
exit;
!sumber
Seperti pada jawaban lain yang disarankan seseorang dapat menggunakan kelas
Mage_CatalogInventory_Model_Stock_Item
secara langsung. Tetapi kita harus mereferensikan produk dengan benar melalui panggilansetProduct
untuk memiliki kode yang berfungsi baik untuk item stok baru dan yang ada.Solusi alternatif
Namun jika Anda
$product->save
tetap menelepon saya hanya akan mengatur data stok melalui$product->setStockdata($array)
sebagai berikut. Dengan cara ini Magento membuat item stok yang benar dari data stok. Keuntungan besar adalah bahwa pembaruan stok barang terjadi dalam transaksi yang sama dengan$product->save()
. Ini penting untuk konsistensi data.sumber
Ini adalah kode C # saya
is_in_stockSpecified
pentingIni adalah output
sumber