Ketika seorang pelanggan datang ke toko kami dan memeriksa beberapa item, saya perlu menulis modul untuk menghitung pengiriman berdasarkan beberapa faktor. Saya telah menentukan dari penelitian saya bahwa hal-hal berikut harus terjadi:
Pertama, saya perlu memisahkan item keranjang ke dalam pesanan yang berbeda untuk perhitungan pengiriman. Saya ingin pesanan diurutkan berdasarkan nilai atribut "vendor". "Vendor" adalah atribut yang kami tambahkan ke sistem yang berlaku untuk semua produk sederhana. Jadi katakanlah di kereta ada kemeja pink dengan "vendor" value "1", pensil dengan "vendor" value "1", dan kemeja biru dengan "vendor" value "2". Semua item dengan nilai "vendor" "1" harus satu urutan, sedangkan item dengan nilai "vendor" "2" harus merupakan urutan yang berbeda. Saya melihat pertanyaan lain ini menjawab dilema ini, tetapi kemudian memunculkan yang lain.
Kedua, saya perlu menghitung pengiriman dengan fungsi pengiriman UPS dan Fedex standar Magento tetapi dengan alamat asal yang ditentukan oleh nomor nilai "vendor" (disimpan dalam tabel database terpisah). Ada saran!
Saya menggunakan cuplikan kode untuk memulai dari sini dan di sini .
Saya mungkin akan memiliki beberapa pertanyaan, tetapi yang pertama adalah yang dicetak tebal di atas.
PEMBARUAN Saya memutuskan akan lebih baik untuk mengganti beberapa modul inti pengiriman magento untuk melakukan apa yang saya coba lakukan. Tolong bantu saya menemukan di mana dan apa yang harus dilakukan untuk memanipulasi fungsionalitas Magento multishipping untuk memecah item pesanan menjadi pengiriman berdasarkan atribut "vendor"! Saya berjuang dengan ini.
Jawaban:
Sesuatu yang perlu dipertimbangkan di sini adalah bahwa Anda mungkin hanya perlu menerapkan beberapa perubahan front-end kosmetik pada templat multishipping (
template/checkout/multishipping/
) sehingga dua pesanan hanya muncul sebagai satu pesanan kepada pelanggan. Theshipping.phtml
danoverview.phtml
template membagi dua perintah, masing-masing dengan header (Alamat 1 dari 2, dll) dan copy lain untuk menunjukkan itu adalah dua perintah.Alih-alih default, saya mungkin menyarankan untuk menjadi sedikit kreatif pada template ini sehingga dua pesanan hanya dibagi sehingga mereka hanya muncul sebagai dua item baris terpisah.
Bit selanjutnya adalah menangani asal pengiriman yang berbeda berdasarkan atribut vendor. Ini mungkin bisa dilakukan di Mage_Shipping_Model_Shipping. Anda dapat melihat tepat di atas adalah tempat Magento mengambil alamat asal pengiriman dari konfigurasi dan kemudian lebih jauh ke bawah dalam
requestToShipment()
metode, elemen alamat asal ditugaskan untuk permintaan pengiriman (yang saya asumsikan akan digunakan nanti tergantung pada metode pengiriman dipanggil).Setidaknya itu bisa menjadi arah untuk masuk. Membaca pertanyaan Anda dan pembaruan Anda Saya mendapat kesan bahwa Anda membuat ini lebih sulit daripada yang diperlukan. Selalu ingat bahwa umumnya yang terbaik adalah membiarkan Magento melakukan apa yang ingin dilakukan, dan hanya memodifikasi bit kecil untuk menangani kasus spesifik Anda. Mayoritas dari apa yang Anda butuhkan sudah dilakukan pada intinya, jadi agak konyol untuk menulis ulang komponen multi-pengiriman ketika mungkin ada pilihan yang lebih sederhana.
sumber
Mage_Shipping_Model_Shipping
hanya akan mengganti alamat asal dalam permintaan pengiriman dengan asal yang ditetapkan untuk vendor itu. Magento kemudian akan melanjutkan bisnisnya dan menarik tarif pengiriman apa pun yang akan berlaku untuk pesanan itu. Saya mungkin bisa melihat salah satu modul pengiriman WebShopApps berguna di sini, karena memungkinkan Anda untuk menetapkan metode pengiriman berdasarkan berbagai kriteria. - sekali lagi, ini semua secara teori, saya belum pernah melakukan hal seperti ini sebelumnya, jadi mungkin ada beberapa peringatan (selalu ada). -/app/code/core/Mage/Sales/Model/Quote.php
- Ingatlah bahwa Magento tidak begitu linier dengan kereta belanja lainnya. Pergilah ke lubang kelinci dan lihat bagaimana kutipan diubah menjadi pesanan (dan kredit, dll.). Pada titik tertentu Anda akan menemukan metode yang ingin Anda ubah. Sekali lagi, seperti yang saya katakan sebelumnya, seringkali bermanfaat untuk berinvestasi dalam modul backend yang berkualitas (dan yang paling penting, dukungan) yang akan mencapai apa yang Anda butuhkan dengan cepat. Beberapa mur dan baut tidak suka diubah.