1

特定のイベントを監視し、支払い方法に基づいて新しい自動ステータス/状態に自動的に進む Magento モジュールを構築しようとしています。
そのために、支払い方法に基づいてバックオフィスのステータスを整理しました。例えば:

イベント:sales_order_place_after
自動ステータス: pp_1_pending- 支払い方法がペイパルの場合、新しい注文が自動的にこのステータスになる最初のステータス/状態。

イベント:sales_order_payment_pay
自動 ステータス: pp_2_payment- 支払い方法がペイパルの場合、注文が支払われた後の 2 番目のステータス/状態

イベント:sales_order_invoice_save_after
自動 ステータス: pp_3_complete- 注文が請求され、トランザクションが終了した後の 3 番目と最後のステータス/状態。

これを機能させるには、プレフィックス pp_ を使用してすべてのステータスを収集する必要があります。注文で設定されたものを確認した後、順番に次のステータスに進みます。このようにして、このモジュールはスケーラブルになります。

ただし、ステータス コレクションを取得できないようです。やっています:
$statuses = Mage::getModel('sales/order_status')
->getCollection()
->addAttributeToSelect('status')
->addAttributeToSelect('label')
->addFieldToFilter('status',array('like','pp_'));

誰でも私を助けてくれることを願っています。皆さんありがとう!

4

4 に答える 4

1

addAttributeToSelect ()関数は、EAV ベースのモデルに使用されます。フラット モデルには、addFieldToSelect ()を使用します。

コードは

$statuses = Mage::getModel('sales/order_status')
->getCollection()
->addFieldToSelect('status')
->addFieldToSelect('label')
->addFieldToFilter('status',array('like'=>'pp_%'));
于 2013-01-25T07:53:30.547 に答える
0

pp_で始まるステータスが必要なため、クエリでワイルドカード (%) を使用する必要があります。

$statuses = Mage::getModel('sales/order_status')  
        ->getCollection()  
        ->addAttributeToSelect('status')  
        ->addAttributeToSelect('label')  
        ->addFieldToFilter('status',array('like','pp_%'));
于 2013-01-25T07:38:26.733 に答える
0

誰かが疑問に思っている場合に備えて、状態とステータスの両方を取得するには、次の関数を使用します。
private function _allStatusStateCollection($filter) {
$collection = Mage::getModel( 'sales/order_status' )
->getCollection()->joinStates();
if ($filter != '') { return $collection->addFieldToFilter('main_table.status',array('like'=>$filter.'%')); }
return $collection;
}

于 2013-01-25T23:23:19.710 に答える
0

問題がなければ、生成された SELECT クエリを見てください。

$collection->getSelect()->__toString();
于 2013-01-24T21:27:29.553 に答える