স্থিতিতে সম্পূর্ণ যেতে একটি আদেশ জোর করুন


11

আমরা একটি কাস্টম মডিউল ব্যবহার করছি যা এর জন্য স্ট্যাটাসটির প্রয়োজন: "সম্পূর্ণ" (আমি মডিউলটি পরিবর্তন করতে পারি না কারণ এটি আয়নক्यूब ব্যবহার করে)

আমরা এমন একটি অর্থপ্রদান ব্যবস্থাও ব্যবহার করছি যা স্থিতির বিকল্পটি দেয় না: "সম্পূর্ণ"

সুতরাং আমার প্রশ্নটি: আমি কীভাবে কোনও অর্ডারকে স্থিতি সম্পূর্ণ করতে বাধ্য করতে পারি?

পিএস: এটি কাজ করে না:

$order = Mage::getSingleton('sales/order');
$order->loadByIncrementId('12345');
$order->setState(Mage_Sales_Model_Order::STATE_COMPLETE, true);
$order->save();

সমাধানটি এখানে সরবরাহ করা হয়েছে: magento.stackexchange.com/a/244601/15769 এটি আমার পক্ষে কাজ করে < br pls

উত্তর:


12

অর্ডার অবস্থাটিকে ম্যানুয়ালি 'সম্পূর্ণ' হিসাবে সেট করার অনুমতি নেই এবং আপনি যখন setState'সম্পূর্ণ' রাষ্ট্রের সাথে অর্ডারটি কল করবেন তখন আপনার এই ব্যতিক্রম হওয়া উচিত :

অর্ডার স্টেট "সম্পূর্ণ" অবশ্যই ম্যানুয়ালি সেট করা উচিত নয়।

এর কারণটি সহজ: 'সম্পূর্ণ' রাষ্ট্র (এবং স্থিতি, যেহেতু এটি 'সম্পূর্ণ' স্ট্যাটাস সহ একমাত্র রাজ্য) এটি নির্দেশ করে যে কোনও অর্ডার পুরোপুরি পূরণ হয়েছে। অর্থাৎ এটি স্থাপন, চালিত এবং গ্রাহকের কাছে প্রেরণ করা হয়েছে।

একবার অর্ডার চালান এবং শিপিং করা হয়ে গেলে, ম্যাজেন্টো স্বয়ংক্রিয়ভাবে আদেশটিতে এই রাজ্যটি সেট করবে।

যদি আপনার অর্থ প্রদানের সিস্টেমটি 'সম্পূর্ণ' স্থিতির "অনুমতি দেয় না", তবে আমি এটির উপর বিশ্বাস করব না, বিশেষত এটি আইওনকোড এনকোডড থাকার কারণে। তবে, যদি এটি ম্যাজেন্টোর বাইরে চালান পরিচালনা করে থাকে, তবে আপনাকে অর্ডারটির জন্য ম্যানুয়ালি একটি "অফলাইন" চালান তৈরি করতে হবে যাতে ম্যাজেন্টো বুঝতে পারে যে এটির জন্য অর্থ প্রদান করা হয়েছে।

অর্ডারগুলি সম্পূর্ণরূপে যেমনটি করা উচিত ঠিক তেমনভাবে আঘাত না করে তার সমস্যাটিকে ঘিরে কাজ করে নিজেকে সংক্ষিপ্ত-পরিবর্তনের চেষ্টা করবেন না। পরিবর্তে, আদেশটি উভয়ই চালিত এবং ম্যাজেন্টোতে প্রেরণ করা হয়েছে যাতে এটি সিস্টেমের দ্বারা সম্পূর্ণ হিসাবে চিহ্নিত হয়ে যায় তা নিশ্চিত করে প্রকৃত সমস্যাটি সমাধান করুন।


এটি প্রশ্নের উত্তর দেয় না। যদিও এটি ঠিকানার কারণগুলি করে এটি করা উচিত নয়, এটি সমস্ত কিছুর জন্য ধরা পড়ে না। আমি নিজেই এমন পরিস্থিতি অর্জন করেছি যেখানে অর্ডার প্রসেসিংয়ের জন্য বেশিরভাগ ম্যাজেন্টো এড়িয়ে যায় এবং অর্ডার সম্পূর্ণ স্থিতিতে সেট করা দরকার।
নাভার

1
@ নাভার আসলে এটি করে ... অর্ডারটির জন্য ম্যানুয়ালি একটি অফলাইন চালান উত্পন্ন করার অংশটি দেখুন। এটি করুন এবং অর্থ প্রদান প্রসেসরটি ব্যবহার না করেই আদেশটি সম্পূর্ণরূপে চলে যাবে।
ডেভিডালগার

3
অথবা, আপনি কি জানেন: stackoverflow.com/a/8906785/43790
Navarr

2
@ নাভের শিওর, এসকিউএল এর মাধ্যমেও কেউ সরাসরি ডিবিতে লিখতে পারত, তবে এটি মডেল বাস্তবায়নের ক্ষেত্রে সুরক্ষিত রাষ্ট্র হওয়ার বিষয়টি অস্বীকার করে না। সর্বোত্তম উত্তর অন্তর্নিহিত বিষয়ে সম্বোধন না করে অন্ধভাবে "আসুন এক্স অর্জন করুন" এর উত্তর দেয় না। যাইহোক, এই শেষ আমি এই সম্পর্কে এখানে মন্তব্য করা হবে।
ডেভিডালগার

ইঞ্জিন চেক লাইট গাড়ির ড্যাশবোর্ডে প্রজ্জ্বলিত। আমি কীভাবে সমস্যাটি সমাধান করবেন তা জানতাম না। আমি তখন সেই ফিউজটি সরিয়ে দিয়েছি যা সেই সামান্য আলো স্যুইচ করে। আমার মনে হয় এখন আমার ইঞ্জিন ঠিকঠাক কাজ করছে।
মোহাম্মদ জোরেড

0

রাষ্ট্র পরিবর্তন করতে:

$order->setData('state', Mage_Sales_Model_Order::STATE_COMPLETE);

স্থিতি পরিবর্তন করতে:

$order->addStatusToHistory(Mage_Sales_Model_Order::STATE_COMPLETE);

এবং তারপর $order->save();

setDataআপনাকে ম্যানুয়ালি কল করতে পারবেন না এমন ব্যতিক্রমটি এড়াতে আপনাকে রাষ্ট্র পরিবর্তন করতে হবেsetState


-3

এটা চেষ্টা কর.

$order = Mage::getModel('sales/order')->load(Mage::getSingleton('checkout/session')->getLastOrderId());
$order_id=$order->getData('entity_id');
$order2 = Mage::getModel('sales/order')->load($order_id); 
$order2->setData('state', "new");
    $order2->setStatus("pending");
$order2->save();

এটি আমার প্রকল্পে আমার জন্য কাজ করে ..


আহা, সুতরাং আপনি অর্ডারটি 'পুনরায় চালু' করেছেন এবং তারপরে এটি সেট করেছেন: নতুন-> মুলতুবি-> সম্পূর্ণ হয়েছে?
বব ভ্যান লুইজট

না আমি অর্ডারটি লোড করেছি এবং তারপরে আদেশে নতুন স্থিতি এবং স্থিতি নির্ধারণ করেছি।
কুলদীপ

এটি স্টেট / স্ট্যাটাস নতুন / মুলতুবি, যা কোনও সমস্যা নয়। আসল সমস্যাটি হ'ল ম্যানুয়ালি কীভাবে এটি 'সম্পূর্ণ' সেট করা যায়।
ওচেম

-3
$oResource = Mage::getSingleton('core/resource'); 

$oConnection = $oResource->getConnection('core_write'); 

$sSql = "UPDATE " . ' ' . $oResource->getTableName('sales_flat_order') .
        " SET status = '" . Mage_Sales_Model_Order::STATE_COMPLETE . "', state = '" . Mage_Sales_Model_Order::STATE_COMPLETE . "' WHERE
entity_id = " . $oOrder->getId();

$oConnection->query($sSql);

আমি সরাসরি এসকিউএল কার্যকর করা ব্যবহারকে নিরুৎসাহিত করব এবং ম্যাজেন্টো ওআরএম বাস্তবায়নের উপর নির্ভর করব।
7-15 ই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.