हम एक पुराने, आउट-ऑफ-सेल सिस्टम से Magento 1.7 का उपयोग करने के लिए विशेष रूप से हमारे पीओएस के रूप में उपयोग कर रहे हैं। अप्रत्याशित रूप से नहीं, हम जिन चुनौतियों का सामना कर रहे हैं, उनमें से एक यह है कि पुरानी व्यवस्था से तबाही के बिना पुराने सिस्टम से लगभग 20 साल के रिकॉर्ड कैसे प्राप्त किए जाएं।
ग्राहक रिकॉर्ड को स्थानांतरित करने की चुनौती को भी अलग करते हुए, जिस समस्या पर मैं इस सवाल पर ध्यान केंद्रित कर रहा हूं, वह यह है कि मैं पुराने POS से Mage के ऐतिहासिक ऑर्डर डेटा को कैसे स्थानांतरित करने जा रहा हूं। जब हम बात कर रहे हैं तो कई संख्याओं पर यह सुनिश्चित नहीं होता है कि हम कितने ऑर्डर रिकॉर्ड कर रहे हैं, लेकिन मैं कम से कम एक मिलियन कहूंगा।
यहां बताया गया है कि मैं इस बारे में क्या सोच रहा हूं:
- मैगेंटो को इसके साथ अच्छा खेलने के लिए डेटा को वास्तव में कैसे तैयार किया जाना चाहिए, इसका पता लगाएं। क्या हम इसे पुराने पीओएस से एक प्रारूप में निकाल सकते हैं जो काम करता है, यह संदिग्ध है, लेकिन आइए एक पल के लिए मान लें कि यह अच्छा है ...
- .CSV फ़ाइल w / अच्छी तरह से स्वरूपित ऐतिहासिक डेटा बनाएँ
- पढ़ने के लिए एक रास्ता खोजें।
$order
पंक्ति द्वारा Magento के ऑब्जेक्ट रो में .CSV -> सहेजें () - फायदा!
मेरी समस्या यह है कि मैं बिंदु 2 और 3 पर कैसे जा सकता हूं, इस बारे में थोड़ा फजी हूं, आंकड़े पर जाएं। मैं पुराने पीओएस से बाहर आने वाले डेटा को प्रारूपित कर सकता हूं, हालांकि मुझे इसकी आवश्यकता है, भले ही यह अत्यधिक बोझिल हो और इसमें पर्ल शामिल हो, लेकिन एक बार मेरे पास .CSV फ़ाइल (या जो भी फ़ाइल प्रकार वास्तव में इस प्रक्रिया के लिए काम करेगा) मैं बहुत अस्पष्ट हूं। मैं इसे Magento के ऑर्डर ऑब्जेक्ट में कैसे खिलाऊंगा।
मैंने कुछ Googling किया है, और मैं Mage के ऑर्डर ऑब्जेक्ट का उपयोग करके लोगों के उदाहरणों के साथ प्रोग्राम ऑर्डर आयात करने के उदाहरणों के साथ आया हूं, लेकिन वे इस बात पर बहुत कम चर्चा करते हैं कि वे ऑब्जेक्ट को फ्रंट एंड कार्ट के अलावा अन्य डेटा स्रोतों से कैसे कनेक्ट कर रहे हैं। मैं ऑर्डर ऑब्जेक्ट के एक संस्करण का अध्ययन कर रहा हूं:
$id=1; // get Customer Id
$customer = Mage::getModel('customer/customer')->load($id);
$transaction = Mage::getModel('core/resource_transaction');
$storeId = $customer->getStoreId();
$reservedOrderId = Mage::getSingleton('eav/config')->getEntityType('order')->fetchNewIncrementId($storeId);
$order = Mage::getModel('sales/order')
->setIncrementId($reservedOrderId)
->setStoreId($storeId)
->setQuoteId(0)
->setGlobal_currency_code('USD')
->setBase_currency_code('USD')
->setStore_currency_code('USD')
->setOrder_currency_code('USD');
// set Customer data
$order->setCustomer_email($customer->getEmail())
->setCustomerFirstname($customer->getFirstname())
->setCustomerLastname($customer->getLastname())
->setCustomerGroupId($customer->getGroupId())
->setCustomer_is_guest(0)
->setCustomer($customer);
// set Billing Address
$billing = $customer->getDefaultBillingAddress();
$billingAddress = Mage::getModel('sales/order_address')
->setStoreId($storeId)
->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_BILLING)
->setCustomerId($customer->getId())
->setCustomerAddressId($customer->getDefaultBilling())
->setCustomer_address_id($billing->getEntityId())
->setPrefix($billing->getPrefix())
->setFirstname($billing->getFirstname())
->setMiddlename($billing->getMiddlename())
->setLastname($billing->getLastname())
->setSuffix($billing->getSuffix())
->setCompany($billing->getCompany())
->setStreet($billing->getStreet())
->setCity($billing->getCity())
->setCountry_id($billing->getCountryId())
->setRegion($billing->getRegion())
->setRegion_id($billing->getRegionId())
->setPostcode($billing->getPostcode())
->setTelephone($billing->getTelephone())
->setFax($billing->getFax());
$order->setBillingAddress($billingAddress);
$shipping = $customer->getDefaultShippingAddress();
$shippingAddress = Mage::getModel('sales/order_address')
->setStoreId($storeId)
->setAddressType(Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
->setCustomerId($customer->getId())
->setCustomerAddressId($customer->getDefaultShipping())
->setCustomer_address_id($shipping->getEntityId())
->setPrefix($shipping->getPrefix())
->setFirstname($shipping->getFirstname())
->setMiddlename($shipping->getMiddlename())
->setLastname($shipping->getLastname())
->setSuffix($shipping->getSuffix())
->setCompany($shipping->getCompany())
->setStreet($shipping->getStreet())
->setCity($shipping->getCity())
->setCountry_id($shipping->getCountryId())
->setRegion($shipping->getRegion())
->setRegion_id($shipping->getRegionId())
->setPostcode($shipping->getPostcode())
->setTelephone($shipping->getTelephone())
->setFax($shipping->getFax());
$order->setShippingAddress($shippingAddress)
->setShipping_method('flatrate_flatrate')
->setShippingDescription($this->getCarrierName('flatrate'));
$orderPayment = Mage::getModel('sales/order_payment')
->setStoreId($storeId)
->setCustomerPaymentId(0)
->setMethod('purchaseorder')
->setPo_number(' - ');
$order->setPayment($orderPayment);
// let say, we have 2 products
$subTotal = 0;
$products = array(
'1001' => array(
'qty' => 1
),
'1002' ->array(
'qty' => 3
),
);
foreach ($products as $productId=>$product) {
$_product = Mage::getModel('catalog/product')->load($productId);
$rowTotal = $_product->getPrice() * $product['qty'];
$orderItem = Mage::getModel('sales/order_item')
->setStoreId($storeId)
->setQuoteItemId(0)
->setQuoteParentItemId(NULL)
->setProductId($productId)
->setProductType($_product->getTypeId())
->setQtyBackordered(NULL)
->setTotalQtyOrdered($product['rqty'])
->setQtyOrdered($product['qty'])
->setName($_product->getName())
->setSku($_product->getSku())
->setPrice($_product->getPrice())
->setBasePrice($_product->getPrice())
->setOriginalPrice($_product->getPrice())
->setRowTotal($rowTotal)
->setBaseRowTotal($rowTotal);
$subTotal += $rowTotal;
$order->addItem($orderItem);
}
$order->setSubtotal($subTotal)
->setBaseSubtotal($subTotal)
->setGrandTotal($subTotal)
->setBaseGrandTotal($subTotal);
$transaction->addObject($order);
$transaction->addCommitCallback(array($order, 'place'));
$transaction->addCommitCallback(array($order, 'save'));
$transaction->save();
तो यहाँ मेरे विशिष्ट प्रश्न हैं:
- क्या यह इस समस्या के लिए दूर से ही कामुक दृष्टिकोण की तरह प्रतीत होता है? और, यदि नहीं, तो आपको कैसे लगता है कि मैं इस मुद्दे को कम बेवकूफ की तरह देख सकता हूं?
- यदि यह एक कामुक दृष्टिकोण है, तो क्या मुझे ऑर्डर प्रक्रिया द्वारा प्रत्येक मॉडल के लिए एक अलग .CSV की आवश्यकता है? Mage :: getModel ('बिक्री / ऑर्डर'), Mage :: getModel ('बिक्री / ऑर्डर_एड्रेस'), आदि?
- क्या एक .CSV भी जाने का रास्ता है?
- मैं इस ऑब्जेक्ट में अपना डेटा कैसे खिलाऊंगा, क्या वह डेटा एक .CSV में निहित है या आपके पास क्या है?
- आप ओवरहेड को सीमित करने के बारे में कैसे जाएंगे?
यहां तक कि अगर मैं इस बारे में पूरी तरह से मूर्खतापूर्ण तरीके से सोच रहा हूं और आप मुझे उतना ही बताते हैं, मैं वास्तव में किसी भी इनपुट की सराहना करता हूं।
धन्यवाद धन्यवाद धन्यवाद!