Как объединить две или более учетных записей клиентов в magento


Возможно ли объединить два или более (копирование заказов клиентов и прочее) учетных записей клиентов?

Возможно ли это в magento?

Author: Teja Bhagavan Kollepara, 2013-06-27

2 answers

Такой серверной функциональности нет, но это должно быть возможно путем непосредственного редактирования базы данных. Я никогда этого не делал, поэтому не используйте это в продуктивной системе, но я бы предложил вам сделать:

  • выберите одного из клиентов, которого вы не хотите оставлять, и получите его идентификатор entity_id из таблицы клиентов
  • получите идентификатор сущности второго клиента и замените его первым идентификатором сущности в таблицах адресов, таблицах заказов, таблицах списков пожеланий и предложений и (возможно) некоторых подробнее
  • удалить второго клиента

Я печатаю это бесплатно, поэтому я не знаю фактических имен таблиц atm. Вам нужен список или вы можете найти их сами?

Приветствия Саймон

 1
Author: simonthesorcerer, 2013-06-28 18:01:30
    $keepid = $keepcustomer->getId();
    $keepemail = $keepcustomer->getEmail();
    $keepegroup = $keepcustomer->getGroupid();

    foreach($mergeids as $id) {

        $customer = Mage::getModel('customer/customer')->load($id);

        $email = $customer->getEmail();

        $orderCollection = Mage::getModel('sales/order')->getCollection()
                           ->addFieldToFilter('customer_email',$email);


        foreach($orderCollection as $order) {

            $order->setCustomer_id($keepid);
            $order->setCustomer_email($keepemail);
            $order->setCustomer_group_id($keepegroup);
            $order->save(); 
        }

        // $wishList = Mage::getSingleton('wishlist/wishlist')->loadByCustomer($customer);
           $wcollection = Mage::getSingleton('wishlist/wishlist')->getCollection()
                            ->addFieldToFilter('customer_id', array('eq'=>$id));

           if ( count($wcollection)>0 ) {
               foreach($wcollection as $wish) {
                   $wish->setCustomer_id($keepid); 
                   $wish->save(); 
               }
           }

           $bcollection = Mage::getSingleton('sales/billing_agreement')->getCollection()
                            ->addFieldToFilter('customer_id', array('eq'=>$id));

           if ( count($bcollection)>0 ) {
               foreach($bcollection as $billing) {
                   $billing->setCustomer_id($keepid); 
                   $billing->save(); 
               }
           }








           $ncollection = Mage::getModel('newsletter/queue')->getCollection()
                            ->addFieldToFilter('newsletter_sender_email', array('eq'=>$email));

           if ( count($ncollection)>0 ) {
               foreach($ncollection as $n) {
                   $n->setNewsletter_sender_email($keepemail); 
                   $n->save(); 
               }
           }


           $ncollection = Mage::getModel('newsletter/subscriber')->getCollection()
                            ->addFieldToFilter('customer_id', array('eq'=>$id));

           if ( count($ncollection)>0 ) {
               foreach($ncollection as $n) {
                   $n->setCustomer_id($keepid); 
                   $n->setSubscriber_email($keepemail);
                   $n->save(); 
               }
           }


           $ncollection = Mage::getModel('newsletter/template')->getCollection()
                            ->addFieldToFilter('template_sender_email', array('eq'=>$email));

           if ( count($ncollection)>0 ) {
               foreach($ncollection as $n) {
                   $n->setTemplate_sender_email($keepemail); 
                   $n->save(); 
               }
           }


           $dcollection = Mage::getModel('downloadable/link_purchased')->getCollection()
                            ->addFieldToFilter('customer_id', array('eq'=>$id));

           if ( count($dcollection)>0 ) {
               foreach($dcollection as $d) {
                   $d->setCustomer_id($keepid); 
                   $d->save(); 
               }
           }



           $dcollection = Mage::getModel('sales/recurring_profile')->getCollection()
                            ->addFieldToFilter('customer_id', array('eq'=>$id));

           if ( count($dcollection)>0 ) {
               foreach($dcollection as $d) {
                   $d->setCustomer_id($keepid); 
                   $d->save(); 
               }
           }


    $customer->delete();

    }
 2
Author: Guru, 2013-06-30 21:21:24