Guest User

Untitled

a guest
Jan 23rd, 2019
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.43 KB | None | 0 0
  1. <?php
  2.  
  3. namespace ABCSolutionsCustomOrderNumberObserver;
  4.  
  5. use MagentoFrameworkEventObserver;
  6. use MagentoFrameworkEventObserverInterface;
  7. use MagentoSalesModelOrder;
  8. use MagentoSalesModelOrderAddress;
  9. use MagentoFrameworkAppResourceConnection;
  10.  
  11. class ChangeOrderId implements ObserverInterface
  12. {
  13.  
  14. /**
  15. * @var MagentoFrameworkAppConfigScopeConfigInterface
  16. */
  17. protected $scopeConfig;
  18.  
  19. /**
  20. * @var MagentoFrameworkAppResourceConnection
  21. */
  22. protected $resource;
  23.  
  24. /**
  25. * @var PsrLogLoggerInterface
  26. */
  27. protected $logger;
  28.  
  29. /**
  30. * @var ABCSolutionsCustomOrderNumberModelOrderidFactory
  31. */
  32. protected $OrderidobjFactory;
  33.  
  34. /**
  35. * @var MagentoSalesModelResourceModelOrderCollectionFactory
  36. */
  37. protected $_orderCollectionFactory;
  38.  
  39. /** @var MagentoSalesModelOrderStatusHistoryFactory $historyFactory */
  40. protected $historyFactory;
  41.  
  42.  
  43. /** @var MagentoSalesModelOrderFactory $orderFactory */
  44. protected $orderFactory;
  45.  
  46.  
  47. public function __construct(
  48. PsrLogLoggerInterface $logger,
  49. ABCSolutionsCustomOrderNumberModelOrderidFactory $Orderidobj,
  50. ResourceConnection $resource,
  51. MagentoSalesModelResourceModelOrderCollectionFactory $orderCollectionFactory,
  52. MagentoFrameworkAppConfigScopeConfigInterface $scopeConfig,
  53. MagentoSalesModelOrderFactory $orderFactory,
  54. MagentoSalesModelOrderStatusHistoryFactory $historyFactory
  55. ) {
  56. $this->resource = $resource;
  57. $this->logger = $logger;
  58. $this->scopeConfig = $scopeConfig;
  59. $this->OrderidobjFactory = $Orderidobj;
  60. $this->_orderCollectionFactory = $orderCollectionFactory;
  61. $this->orderFactory = $orderFactory;
  62. $this->historyFactory = $historyFactory;
  63. }
  64.  
  65. public function execute(Observer $observer)
  66. {
  67.  
  68. try{
  69. if($this->scopeConfig->getValue('custom_orders/custom_order/active', MagentoStoreModelScopeInterface::SCOPE_STORE))
  70. {
  71. /** @var MagentoSalesModelOrder */
  72. $orderInstance = $observer->getOrder();
  73.  
  74. $prefix = "";
  75.  
  76. if($orderInstance->getCustomerGroupId() == 0){//Not Logged Customers
  77. $prefix = $this->scopeConfig->getValue('custom_orders/not_logged_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
  78. }elseif($orderInstance->getCustomerGroupId() == 1){ // Retails Customers
  79. $prefix = $this->scopeConfig->getValue('custom_orders/retail_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
  80. }elseif($orderInstance->getCustomerGroupId() == 2){ // MD Customers
  81. $prefix = $this->scopeConfig->getValue('custom_orders/md_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
  82. }elseif($orderInstance->getCustomerGroupId() == 3){ //DP Customers
  83. $prefix = $this->scopeConfig->getValue('custom_orders/dp_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
  84. }
  85.  
  86. $OrderNumber = $orderInstance->getIncrementId();
  87.  
  88. if (strpos($OrderNumber, $prefix) !== false) {
  89. //return $this;
  90. file_put_contents('ChangeOrderId.txt',print_r("n" . ' => ' . $OrderNumber,true),FILE_APPEND);
  91. }else{
  92.  
  93. $randomNumber = mt_rand(10000000,99999999);
  94. $incNo = $prefix . $randomNumber;
  95. if($this->getSalesOrderCollection($incNo)){
  96. $orderIdObj = $this->OrderidobjFactory->create()->load(1);
  97.  
  98. if(!$orderIdObj->getStartup()){
  99. $orderIdObj = $this->OrderidobjFactory->create();
  100. $orderIdObj->setData(array("startup"=>$randomNumber,"currentid"=>$randomNumber))->save();
  101. }
  102. else{
  103. if($orderIdObj->getData("startup") != $randomNumber){
  104. $orderIdObj->setStartup($randomNumber);
  105. $orderIdObj->setCurrentid($randomNumber);
  106. $orderIdObj->save();
  107. }
  108. else{
  109. $randomNumber = (int)$orderIdObj->getData("currentid") + 1;
  110. $orderIdObj->setCurrentid($randomNumber);
  111. $orderIdObj->save();
  112. }
  113.  
  114. }
  115.  
  116. $orderInstance = $observer->getOrder();
  117. $orderInstance->setData("increment_id",$incNo)->save();
  118.  
  119. /* Order Comments and PO Number Starts */
  120. $order_id = $orderInstance->getIncrementId();
  121.  
  122. /** @param MagentoSalesModelOrderFactory $order */
  123. $order = $this->orderFactory->create()->load($orderInstance->getId());
  124.  
  125. $payment = $order->getPayment();
  126. $method = $payment->getMethodInstance();
  127. $methodTitle = $method->getTitle();
  128.  
  129. if($methodTitle == "PayPal"){
  130.  
  131. if(isset($_SESSION['po_number'])){
  132. $po_number = $_SESSION['po_number'];
  133. unset($_SESSION['po_number']);
  134. }
  135.  
  136. if(isset($_SESSION['comments_note'])){
  137. $comment = $_SESSION['comments_note'];
  138. // remove any HTML tags
  139. $comment = strip_tags($comment);
  140. unset($_SESSION['comments_note']);
  141. }
  142.  
  143. $order->setData('customer_note',$comment);
  144. $order->setData('po_number',$po_number);
  145. $order->save();
  146.  
  147. // make sure $order exists
  148. if ($order->getData('entity_id')) {
  149.  
  150. /** @param string $status */
  151. $status = $order->getData('status');
  152.  
  153. /** @param MagentoSalesModelOrderStatusHistoryFactory $history */
  154. $history = $this->historyFactory->create();
  155.  
  156. // set comment history data
  157. $history->setData('comment', $comment);
  158. $history->setData('parent_id', $order->getId());
  159. $history->setData('is_visible_on_front', 1);
  160. $history->setData('is_customer_notified', 0);
  161. $history->setData('entity_name', 'order');
  162. $history->setData('status', $status);
  163. $history->save();
  164. }
  165. }
  166. }
  167. }
  168. }
  169. } catch (Exception $e) {
  170. file_put_contents('CustomOrderNumber.txt',print_r("n" . $e->getMessage(),true),FILE_APPEND);
  171. }
  172. }
  173.  
  174. public function getSalesOrderCollection($randomNumber){
  175.  
  176. $orderCollection = $this->_orderCollectionFactory->create()->addAttributeToSelect('*');
  177. $orderCount = count($orderCollection) - 1;
  178. $i = 0;
  179. foreach($orderCollection as $order){
  180. if($order->getIncrementId() == $randomNumber){
  181. $this->getSalesOrderCollection($randomNumber);
  182. }else{
  183. if($orderCount == $i){
  184. return true;
  185. }
  186. }
  187. $i++;
  188. }
  189. }
  190. }
Add Comment
Please, Sign In to add comment