2012-04-16 83 views
0

我正在運行Magento 1.6.2並希望刪除PayPal訂單狀態。他們沒有被使用,他們污染我的訂單狀態列表。禁用PayPal不起作用。Magento 1.6.2刪除PayPal訂單狀態

Magento 1.6.2確實能夠管理管理中的訂單狀態,但Paypal狀態是不可移動的。

有什麼辦法可以將它們從數據庫中刪除,或者只是將它們隱藏起來?

回答

2

我可以告訴你,你不想刪除它們,Mage_Paypal_Model_Info使用它們來檢查付款是在審查,欺詐,處理或完成。我會建議你只處理它們。儘管你可能沒有真正使用它們,但是它們在幕後使用,它們作爲const存在。他們做得比他們真正的傷害更好。

/** 
    * Check whether the payment is in review state 
    * 
    * @param Mage_Payment_Model_Info $payment 
    * @return bool 
    */ 
    public static function isPaymentReviewRequired(Mage_Payment_Model_Info $payment) 
    { 
     $paymentStatus = $payment->getAdditionalInformation(self::PAYMENT_STATUS_GLOBAL); 
     if (self::PAYMENTSTATUS_PENDING === $paymentStatus) { 
      $pendingReason = $payment->getAdditionalInformation(self::PENDING_REASON_GLOBAL); 
      return !in_array($pendingReason, array('authorization', 'order')); 
     } 
     return false; 
    } 

    /** 
    * Check whether fraud order review detected and can be reviewed 
    * 
    * @param Mage_Payment_Model_Info $payment 
    * @return bool 
    */ 
    public static function isFraudReviewAllowed(Mage_Payment_Model_Info $payment) 
    { 
     return self::isPaymentReviewRequired($payment) 
      && 1 == $payment->getAdditionalInformation(self::IS_FRAUD_GLOBAL); 
    } 

    /** 
    * Check whether the payment is completed 
    * 
    * @param Mage_Payment_Model_Info $payment 
    * @return bool 
    */ 
    public static function isPaymentCompleted(Mage_Payment_Model_Info $payment) 
    { 
     $paymentStatus = $payment->getAdditionalInformation(self::PAYMENT_STATUS_GLOBAL); 
     return self::PAYMENTSTATUS_COMPLETED === $paymentStatus; 
    } 

    /** 
    * Check whether the payment was processed successfully 
    * 
    * @param Mage_Payment_Model_Info $payment 
    * @return bool 
    */ 
    public static function isPaymentSuccessful(Mage_Payment_Model_Info $payment) 
    { 
     $paymentStatus = $payment->getAdditionalInformation(self::PAYMENT_STATUS_GLOBAL); 
     if (in_array($paymentStatus, array(
      self::PAYMENTSTATUS_COMPLETED, self::PAYMENTSTATUS_INPROGRESS, self::PAYMENTSTATUS_REFUNDED, 
      self::PAYMENTSTATUS_REFUNDEDPART, self::PAYMENTSTATUS_UNREVERSED, self::PAYMENTSTATUS_PROCESSED, 
     ))) { 
      return true; 
     } 
     $pendingReason = $payment->getAdditionalInformation(self::PENDING_REASON_GLOBAL); 
     return self::PAYMENTSTATUS_PENDING === $paymentStatus 
      && in_array($pendingReason, array('authorization', 'order')); 
    } 

    /** 
    * Check whether the payment was processed unsuccessfully or failed 
    * 
    * @param Mage_Payment_Model_Info $payment 
    * @return bool 
    */ 
    public static function isPaymentFailed(Mage_Payment_Model_Info $payment) 
    { 
     $paymentStatus = $payment->getAdditionalInformation(self::PAYMENT_STATUS_GLOBAL); 
     return in_array($paymentStatus, array(
      self::PAYMENTSTATUS_DENIED, self::PAYMENTSTATUS_EXPIRED, self::PAYMENTSTATUS_FAILED, 
      self::PAYMENTSTATUS_REVERSED, self::PAYMENTSTATUS_VOIDED, 
     )); 
    } 

如果您在app/code/core/Mage/Paypal/etc/config.xml看可以發現這一點,

<sales> 
    <order> 
     <statuses> 
      <pending_paypal translate="label"> 
       <label>Pending PayPal</label> 
      </pending_paypal> 
     </statuses> 
    </order> 
</sales> 

但看應用程序/代碼/核心/法師/銷售/等/ config.xml中

 <!-- /** 
       * @depraceted after 1.4.2, statuses are saved into sales_order_status table 
       */ 
     --> 

你應該查看數據庫中的sales_order_status表,如果您使用的是1.4.2之後的版本,則它們存在於config.xml中的唯一原因是爲了確保向後兼容。

這是添加待處理PayPal狀態的部分,您可以評論/刪除並刪除它,但我建議您在刪除它之前找出此狀態的使用情況,以便您沒有任何看不見的衝突,您可以在app/code和lib /中使用grep -r 'sales_order_status' *來查找可能使用此表的任何內容,以及何時可能使用Pending PayPal