コード例 #1
0
ファイル: Observer.php プロジェクト: rcclaudrey/dev
 public function sales_order_place_after($event)
 {
     $order = $event->getOrder();
     $doTheStuff = true;
     //in_array($order->getPayment()->getMethodInstance()->getCode(), Mage::getStoreConfig('evoc/order/auto_invoicing_payment_methods')); // Mage::getModel('payment/config')->getAllMethods();
     if ($doTheStuff) {
         if ($order->canInvoice()) {
             $invoice = $order->prepareInvoice();
             $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
             $invoice->register();
             $invoice->getOrder()->setCustomerNoteNotify(false);
             $invoice->getOrder()->setIsInProcess(true);
             $order->addStatusHistoryComment('Automatically invoiced by EVO Connector', false);
             Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
             $invoice->sendEmail(true, '');
             $order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
             $order->save();
         } else {
             Vikont_EVOConnector_Model_Log::logWarning(sprintf('Order #%s cannot be invoiced', $order->getIncrementId()));
         }
     }
     return $this;
 }
コード例 #2
0
ファイル: IndexController.php プロジェクト: rcclaudrey/dev
 public function acknowledgerequestAction()
 {
     $this->_authenticate();
     $requestBody = file_get_contents('php://input');
     /**
     $requestBody = <<<XML
     <acknowledgeRequest>
       <id>100000167</id>
       <responseType>WEB_ORDER</responseType>
       <date>2015-07-03 13:56:17.669</date>
       <responseIssues>
         <responseIssue>
           <code>1301</code>
           <message>Invalid payment type for payment CCSAVE</message>
           <responseStatus>FAILURE</responseStatus>
         </responseIssue>
       </responseIssues>
     </acknowledgeRequest>
     XML;
     /**/
     /**
     		$requestBody = <<<XML
     <acknowledgeRequest>
     	<id>1111111111</id>
     	<responseType>WEB_ORDER</responseType>
     	<date>2014-11-12 10:01:00.662</date>
     	<responseIssues>
     		<responseIssue>
     			<code>1010</code>
     			<message>A web order with id 1111111111 is already imported.</message>
     			<responseStatus>FAILURE</responseStatus>
     		</responseIssue>
     		<responseIssue>
     			<code>222</code>
     			<message>some another message</message>
     			<responseStatus>FAILURE</responseStatus>
     		</responseIssue>
     	</responseIssues>
     </acknowledgeRequest>
     XML;
     /**/
     $requestXML = Vikont_EVOConnector_Helper_Data::parseXML($requestBody);
     if (!$requestXML) {
         Mage::helper('evoc/order')->sendAcknowledgeResponse('FAILURE');
         return;
     }
     if ('acknowledgeRequest' !== $requestXML->getName()) {
         Vikont_EVOConnector_Model_Log::log('unknown request type, should be "acknowledgeRequest", got "$requestXML->getName()" instead');
         Mage::helper('evoc/order')->sendAcknowledgeResponse('FAILURE');
         return;
     }
     $orderId = (string) $requestXML->id;
     $responseType = (string) $requestXML->responseType;
     $responseDate = (string) $requestXML->date;
     switch ($responseType) {
         case 'WEB_ORDER':
             $responseIssues = (array) $requestXML->responseIssues;
             if (isset($responseIssues['responseIssue']) && count($responseIssues['responseIssue'])) {
                 $reportIssues = array();
                 foreach ($requestXML->responseIssues->responseIssue as $issue) {
                     $issueCode = (int) $issue->code;
                     if (1010 == $issueCode) {
                         $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
                         // if an order has been dealt with by EVOC, any non-zero value should be at its evo_status field
                         if ((int) $order->getData(Vikont_EVOConnector_Helper_Data::ORDER_EVO_STATUS_FIELD)) {
                             $errorMessage = sprintf('WARNING: unexpected acknowledgeRequest WEB_ORDER issue for order %s at %s:, code: %d, message: %s', $orderId, $responseDate, $issueCode, (string) $issue->message);
                             Vikont_EVOConnector_Model_Log::log($errorMessage);
                             continue;
                         } else {
                             // if the order hasn't been marked as accepted, then let's do that!
                             $order->setData(Vikont_EVOConnector_Helper_Data::ORDER_EVO_STATUS_FIELD, Vikont_EVOConnector_Helper_Data::ORDER_EVO_STATUS_APPROVED)->save();
                             Vikont_EVOConnector_Model_Log::log('Marked order #%s as already imported, code: %d, message: %s', $orderId, $issueCode, (string) $issue->message);
                             continue;
                         }
                     }
                     $reportIssues[] = sprintf('code: %d, message: %s', $issueCode, (string) $issue->message);
                 }
                 if (count($reportIssues)) {
                     Vikont_EVOConnector_Model_Log::log(sprintf('acknowledgeRequest WEB_ORDER issue(s) for order %s at %s:', $orderId, $responseDate));
                     $reportIssues = implode(", \n", $reportIssues);
                     Vikont_EVOConnector_Model_Log::log($reportIssues);
                     $comment = 'Rejected by EVO at ' . $responseDate . " with issues:\n" . $reportIssues;
                     // life is pain
                     Mage::helper('evoc/order')->changeOrderState($orderId, 'holded', 'holded', $comment);
                 }
                 Mage::helper('evoc/order')->sendAcknowledgeResponse('SUCCESS');
                 return;
             } else {
                 $order = Mage::getModel('sales/order')->loadByIncrementId($orderId);
                 if ($order->canInvoice()) {
                     $invoice = $order->prepareInvoice();
                     $invoice->setRequestedCaptureCase(Mage_Sales_Model_Order_Invoice::CAPTURE_OFFLINE);
                     $invoice->register();
                     $invoice->getOrder()->setCustomerNoteNotify(false);
                     $invoice->getOrder()->setIsInProcess(true);
                     $order->addStatusHistoryComment('Automatically invoiced by EVO Connector', false);
                     Mage::getModel('core/resource_transaction')->addObject($invoice)->addObject($invoice->getOrder())->save();
                     $invoice->sendEmail(true, '');
                     //						$order->setState(Mage_Sales_Model_Order::STATE_PROCESSING, true);
                     //						$order->save(); // this is to be called later when changing order state
                 } else {
                     Vikont_EVOConnector_Model_Log::logWarning(sprintf('Order #%s cannot be invoiced', $order->getIncrementId()));
                 }
                 $comment = 'Accepted by EVO at ' . $responseDate;
                 Mage::helper('evoc/order')->changeOrderState($order, Mage_Sales_Model_Order::STATE_PROCESSING, Mage_Sales_Model_Order::STATE_PROCESSING, $comment);
                 Mage::helper('evoc/order')->sendAcknowledgeResponse('SUCCESS');
                 return;
             }
             break;
         case 'WEB_ORDER_CANCELLATION':
             // it seems we don't do this here
             break;
         default:
             Vikont_EVOConnector_Model_Log::log(sprintf('unknown responseType: "%s" for orderId="%s" at %s', $responseType, $orderId, $responseDate));
             Mage::helper('evoc/order')->sendAcknowledgeResponse('FAILURE');
     }
 }