Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace ABCSolutionsCustomOrderNumberObserver;
- use MagentoFrameworkEventObserver;
- use MagentoFrameworkEventObserverInterface;
- use MagentoSalesModelOrder;
- use MagentoSalesModelOrderAddress;
- use MagentoFrameworkAppResourceConnection;
- class ChangeOrderId implements ObserverInterface
- {
- /**
- * @var MagentoFrameworkAppConfigScopeConfigInterface
- */
- protected $scopeConfig;
- /**
- * @var MagentoFrameworkAppResourceConnection
- */
- protected $resource;
- /**
- * @var PsrLogLoggerInterface
- */
- protected $logger;
- /**
- * @var ABCSolutionsCustomOrderNumberModelOrderidFactory
- */
- protected $OrderidobjFactory;
- /**
- * @var MagentoSalesModelResourceModelOrderCollectionFactory
- */
- protected $_orderCollectionFactory;
- /** @var MagentoSalesModelOrderStatusHistoryFactory $historyFactory */
- protected $historyFactory;
- /** @var MagentoSalesModelOrderFactory $orderFactory */
- protected $orderFactory;
- public function __construct(
- PsrLogLoggerInterface $logger,
- ABCSolutionsCustomOrderNumberModelOrderidFactory $Orderidobj,
- ResourceConnection $resource,
- MagentoSalesModelResourceModelOrderCollectionFactory $orderCollectionFactory,
- MagentoFrameworkAppConfigScopeConfigInterface $scopeConfig,
- MagentoSalesModelOrderFactory $orderFactory,
- MagentoSalesModelOrderStatusHistoryFactory $historyFactory
- ) {
- $this->resource = $resource;
- $this->logger = $logger;
- $this->scopeConfig = $scopeConfig;
- $this->OrderidobjFactory = $Orderidobj;
- $this->_orderCollectionFactory = $orderCollectionFactory;
- $this->orderFactory = $orderFactory;
- $this->historyFactory = $historyFactory;
- }
- public function execute(Observer $observer)
- {
- try{
- if($this->scopeConfig->getValue('custom_orders/custom_order/active', MagentoStoreModelScopeInterface::SCOPE_STORE))
- {
- /** @var MagentoSalesModelOrder */
- $orderInstance = $observer->getOrder();
- $prefix = "";
- if($orderInstance->getCustomerGroupId() == 0){//Not Logged Customers
- $prefix = $this->scopeConfig->getValue('custom_orders/not_logged_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
- }elseif($orderInstance->getCustomerGroupId() == 1){ // Retails Customers
- $prefix = $this->scopeConfig->getValue('custom_orders/retail_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
- }elseif($orderInstance->getCustomerGroupId() == 2){ // MD Customers
- $prefix = $this->scopeConfig->getValue('custom_orders/md_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
- }elseif($orderInstance->getCustomerGroupId() == 3){ //DP Customers
- $prefix = $this->scopeConfig->getValue('custom_orders/dp_grp/prefix', MagentoStoreModelScopeInterface::SCOPE_STORE);
- }
- $OrderNumber = $orderInstance->getIncrementId();
- if (strpos($OrderNumber, $prefix) !== false) {
- //return $this;
- file_put_contents('ChangeOrderId.txt',print_r("n" . ' => ' . $OrderNumber,true),FILE_APPEND);
- }else{
- $randomNumber = mt_rand(10000000,99999999);
- $incNo = $prefix . $randomNumber;
- if($this->getSalesOrderCollection($incNo)){
- $orderIdObj = $this->OrderidobjFactory->create()->load(1);
- if(!$orderIdObj->getStartup()){
- $orderIdObj = $this->OrderidobjFactory->create();
- $orderIdObj->setData(array("startup"=>$randomNumber,"currentid"=>$randomNumber))->save();
- }
- else{
- if($orderIdObj->getData("startup") != $randomNumber){
- $orderIdObj->setStartup($randomNumber);
- $orderIdObj->setCurrentid($randomNumber);
- $orderIdObj->save();
- }
- else{
- $randomNumber = (int)$orderIdObj->getData("currentid") + 1;
- $orderIdObj->setCurrentid($randomNumber);
- $orderIdObj->save();
- }
- }
- $orderInstance = $observer->getOrder();
- $orderInstance->setData("increment_id",$incNo)->save();
- /* Order Comments and PO Number Starts */
- $order_id = $orderInstance->getIncrementId();
- /** @param MagentoSalesModelOrderFactory $order */
- $order = $this->orderFactory->create()->load($orderInstance->getId());
- $payment = $order->getPayment();
- $method = $payment->getMethodInstance();
- $methodTitle = $method->getTitle();
- if($methodTitle == "PayPal"){
- if(isset($_SESSION['po_number'])){
- $po_number = $_SESSION['po_number'];
- unset($_SESSION['po_number']);
- }
- if(isset($_SESSION['comments_note'])){
- $comment = $_SESSION['comments_note'];
- // remove any HTML tags
- $comment = strip_tags($comment);
- unset($_SESSION['comments_note']);
- }
- $order->setData('customer_note',$comment);
- $order->setData('po_number',$po_number);
- $order->save();
- // make sure $order exists
- if ($order->getData('entity_id')) {
- /** @param string $status */
- $status = $order->getData('status');
- /** @param MagentoSalesModelOrderStatusHistoryFactory $history */
- $history = $this->historyFactory->create();
- // set comment history data
- $history->setData('comment', $comment);
- $history->setData('parent_id', $order->getId());
- $history->setData('is_visible_on_front', 1);
- $history->setData('is_customer_notified', 0);
- $history->setData('entity_name', 'order');
- $history->setData('status', $status);
- $history->save();
- }
- }
- }
- }
- }
- } catch (Exception $e) {
- file_put_contents('CustomOrderNumber.txt',print_r("n" . $e->getMessage(),true),FILE_APPEND);
- }
- }
- public function getSalesOrderCollection($randomNumber){
- $orderCollection = $this->_orderCollectionFactory->create()->addAttributeToSelect('*');
- $orderCount = count($orderCollection) - 1;
- $i = 0;
- foreach($orderCollection as $order){
- if($order->getIncrementId() == $randomNumber){
- $this->getSalesOrderCollection($randomNumber);
- }else{
- if($orderCount == $i){
- return true;
- }
- }
- $i++;
- }
- }
- }
Add Comment
Please, Sign In to add comment