Como criar programaticamente ordens no Magento?

Às vezes precisamos criar programaticamente os pedidos no Magento. Suponha que você esteja criando um plugin Magento para sua loja para conectá-lo ao mercado como Walmart ou Etsy.

Etapas envolvidas na criação da ordem:

  • Vamos definir os dados do cliente como primeiro nome, sobrenome, e-mail.
  • Definir endereço de envio e cobrança do cliente.
  • Definir o método de envio e pagamento do cliente.
  • Defina o produto e a quantidade que precisa ser encomendada em nossa loja Magento.
  • Crie um cliente se o cliente não existir na nossa loja Magento. É um passo opcional.
  • Adicione o produto à cotação do cliente.
  • Adicione o endereço de envio e cobrança à cotação do cliente.
  • Prepare e salve as cotações do cliente.
  • A ordem é criada na sua loja Magento.

Usar

         $ _store = Mage :: app () -> getStore (); $ _website = Mage :: app () -> getWebsite (); $ _firstName = John '; $ _lastName = 'doe; $ _email = 'demo@demo.com'; / * * Endereço de faturamento personalizado * / $ billingAddress = array ('customer_address_id' => '', 'prefixo' => '', 'nome' => $ _firstName, 'middlename' => '', 'sobrenome' => $ _lastName, 'suffix' => '', 'company' => '', 'street' => array ('0' => 'Setor 63', // Requerido '1' => 'Noida, UP') , 'city' => 'Noida', 'country_id' => 'IN', // Código do país 'region' => 'UP', 'region_id' => '', 'código postal' => '201301', ' telefone '=>' 888-888-8888 ',' fax '=>' ',' save_in_address_book '=> 1); / * * Endereço para envio personalizado * / $ shippingAddress = array ('customer_address_id' => '', 'prefixo' => '', 'nome' => $ _firstName, 'middlename' => '', 'sobrenome' => $ _lastName, 'suffix' => '', 'company' => '', 'street' => array ('0' => 'Setor 63', // Requerido '1' => 'Noida, UP') , 'city' => 'Noida', 'country_id' => 'IN', // Código do país 'region' => 'UP', 'region_id' => '', 'código postal' => '201301', ' telefone '=>' 888-888-8888 ',' fax '=>' ',' save_in_address_book '=> 1); / ** * Insira o método de envio que você deseja usar. Alguns dos outros métodos de envio * são tablerate_tablerate, freeshipping_freeshipping, etc. * Aqui estamos usando flatrate_flatrate * / $ _shippingMethod = 'flatrate_flatrate'; / ** * Insira o método de pagamento que você deseja usar. Alguns dos métodos de pagamento de pedidos * são: checkmo, free, banktransfer, ccsave, purchaseorder etc. * / $ _paymentMethod = 'cashondelivery'; / ** * Fornecer matriz de produto e sua quantidade. * $ array = array (product_id => qty) * / $ productIds = array (905 => 1); $ quote = Mage :: getModel ('vendas / cotação') -> setStoreId ($ _ store-> getId ()); $ quote-> setCurrency (Mage :: app () -> getStore () -> getBaseCurrencyCode ()); $ customer = Mage :: getModel ('cliente / cliente') -> setWebsiteId ($ _ website-> getId ()) -> loadByEmail ($ _ email); / ** * Preparando o cliente para a cotação * se o cliente não estiver cadastrado, criaremos um novo cliente. Este é um processo opcional. * / if (! $ customer-> getId ()) {$ cliente = Mage :: getModel ('cliente / cliente'); $ customer-> setWebsiteId ($ _ site-> getId ()) -> setStore ($ _ store) -> setFirstname ($ _ firstName) -> setLastname ($ _ lastName) -> setEmail ($ _ email); / ** * Criar novo cliente * Ignore o try-catch se não quiser criar um novo cliente. * / try {// Gerando senha para o cliente. Você também pode usar qualquer senha // customizada para ele. $_store = Mage::app()->getStore();
         $_website = Mage::app()->getWebsite();
         $_firstName = John';
         $_lastName = 'doe;
         $_email = 'demo@demo.com';
        /*
         * Custom billing address
         */
        $billingAddress = array(
            'customer_address_id' => '',
                         'prefix' => '',
            'firstname' => $_firstName,
            'middlename' => '',
             'lastname' => $_lastName,
            'suffix' => '',
            'company' => '',
            'street' => array(
                 '0' => 'Sector 63', // Required
                '1' => 'Noida, UP' 
            ),
             'city' => 'Noida',
            'country_id' => 'IN', // Country code
            'region' => 'UP', 
            'region_id' => '',
            'postcode' => '201301',
            'telephone' => '888-888-8888',
            'fax' => '',
            'save_in_address_book' => 1
        );
 
        /*
         * Custom shipping address
         */
        $shippingAddress = array(
            'customer_address_id' => '',
            'prefix' => '',
            'firstname' => $_firstName,
            'middlename' => '',
            'lastname' => $_lastName,
            'suffix' => '',
            'company' => '',
            'street' => array(
                '0' => 'Sector 63', // Required
                '1' => 'Noida, UP' 
            ),
            'city' => 'Noida',
            'country_id' => 'IN', // Country code
            'region' => 'UP',
            'region_id' => '',
            'postcode' => '201301',
            'telephone' => '888-888-8888',
            'fax' => '',
            'save_in_address_book' => 1
        );
 
        /**
         * Enter the shipping method you want to use. Some of the other shipping
         * methods are tablerate_tablerate, freeshipping_freeshipping etc.
         * Here we are using flatrate_flatrate
         */
        $_shippingMethod = 'flatrate_flatrate';
 
        /**
         * Enter the payment method you want to use. Some of the order payment  
   	*methods are checkmo, free, banktransfer, ccsave, purchaseorder etc.
         */
        $_paymentMethod = 'cashondelivery';
 
        /**
         * Provide array of product and their qty.
         * $array = array(product_id => qty)
         */
        $productIds = array(905 => 1);
        $quote = Mage::getModel('sales/quote')
                ->setStoreId($_store->getId());
 
        $quote->setCurrency(Mage::app()->getStore()->getBaseCurrencyCode());
 
        $customer = Mage::getModel('customer/customer')
                ->setWebsiteId($_website->getId())
                ->loadByEmail($_email);
 
        /**
         * Preparing customer for the quote 
         * if the customer is not registered then we will create a new customer. This is  	*an optional process.
         */
        if (!$customer->getId()) {
            $customer = Mage::getModel('customer/customer');
 
            $customer->setWebsiteId($_website->getId())
                    ->setStore($_store)
                    ->setFirstname($_firstName)
                    ->setLastname($_lastName)
                    ->setEmail($_email);
 
            /**
             * Creating new customer
             * Skip try-catch if you don't want to create a new customer.
             */
            try {
                // Generating password for customer. You can also use any custom  // password for it.
                $password = $customer->generatePassword();
                $customer->setPassword($password);
                $customer->setForceConfirmed(true);
                $customer->save();
 
                $customer->setConfirmation(null);
                $customer->save();
                $customerId = $customer->getId();
                $customAddress = Mage::getModel('customer/address');
                $customAddress->setData($billingAddress)
                        ->setCustomerId($customerId)
                        ->setIsDefaultBilling('1')
                        ->setIsDefaultShipping('1')
                        ->setSaveInAddressBook('1');
                $customAddress->save();
 
            } catch (Mage_Core_Exception $e) {
                Mage::getSingleton('customer/session')->addException($e, $this- >__('Error in creating customer'));
                Mage::logException($e);
            } catch (Exception $e) {
                Mage::getSingleton('customer/session')->addException($e, $this- >__('Error in creating customer'));
                Mage::logException($e);
            }
        }
 
        // Assign customer to quote
        $quote->assignCustomer($customer);
 
        // Add products to quote
        foreach ($productIds as $productId => $qty) {
            $product = Mage::getModel('catalog/product')->load($productId);
            $quote->addProduct($product, $qty);
        }
 
        // Add billing address to quote
        $_billingAddressData = $quote->getBillingAddress()- >addData($billingAddress);
 
        // Add shipping address to quote
        $_shippingAddressData = $quote->getShippingAddress()- >addData($shippingAddress);
 
        /**
         * If the customer is a registered customer then you can fetch their billing or  *shipping address as below
         * 
         * $_customerBillingAddress = $customer->getPrimaryBillingAddress();
         * $_customerShippingAddress = $customer->getPrimaryShippingAddress();
         * 
         * $_billingAddressData = $quote->getBillingAddress()- >addData($_customerBillingAddress);
         * $_shippingAddressData = $quote->getShippingAddress()- >addData($_customerShippingAddress);
         */
 
        // Collect shipping rates on quote shipping address data
        $_shippingAddressData->setCollectShippingRates(true)
                ->collectShippingRates();
 
        // Set shipping and payment method on quote shipping address data
        $_shippingAddressData->setShippingMethod($_shippingMethod)
                ->setPaymentMethod($_paymentMethod);
 
        // Set payment method for the quote
        $quote->getPayment()->importData(array('method' => $_paymentMethod));
 
        try {
            $quote->collectTotals();
            $quote->save();
 
            // Preparing Order From Quote
            $service = Mage::getModel('sales/service_quote', $quote);
            $service->submitAll();
            
            // $incrementId is the increment id of the order created.
            $incrementId = $service->getOrder()->getRealOrderId();
 
            Mage::getSingleton('checkout/session')
                    ->setLastQuoteId($quote->getId())
                    ->setLastSuccessQuoteId($quote->getId())
                    ->clearHelperData();
 
           /*
           * $response is the Array of the response with the status of the order  creation.
           */
            $response['success'] = true;
            $response['error'] = false;
        $response['messages'] = 'Order number '.$incrementId.' created  successfully.';
        } catch (Mage_Core_Exception $e) {
            $response['success'] = false;
            $response['error'] = true;
            $response['messages'] = $e->getMessage();
            Mage::logException($e);
        } catch (Exception $e) {
            $response['success'] = false;
            $response['error'] = true;
            $response['messages'] = $this->__('Error in processing order. Please try  again later.');
 
            Mage::logException($e);
        }
        
        Mage::app()->getResponse()->setBody(Mage::helper('core')- >jsonEncode($response)); $ incrementId = $ service-> getOrder () -> getRealOrderId (); Mage :: getSingleton ('checkout / session') -> setLastQuoteId ($ quote-> getId ()) -> setLastSuccessQuoteId ($ quote-> getId ()) -> clearHelperData (); / * * $ response é o array da resposta com o status da criação do pedido. * / $ response ['success'] = true; $ response ['error'] = falso; $ response ['messages'] = 'Número do pedido'. $ incrementId. ' criado com sucesso. '; } catch (Mage_Core_Exception $ e) {$ resposta ['sucesso'] = falso; $ response ['error'] = true; $ response ['messages'] = $ e-> getMessage (); Mage :: logException ($ e); } catch (Exceção $ e) {$ response ['success'] = false; $ response ['error'] = true; $ response ['messages'] = $ this -> __ ('Erro no processamento da ordem. Por favor, tente novamente mais tarde.'); Mage :: logException ($ e); } Mage :: app () -> getResponse () -> setBody (Mago :: helper ('core') -> jsonEncode ($ resposta));

Por favor, passe pelo código acima mencionado


Melhores plataformas de comércio eletrônico para iniciar um mercado de vários fornecedores

As plataformas de comércio eletrônico tornaram o caminho para obter uma loja online tão fácil hoje em dia. A melhor coisa é que a maioria dessas plataformas é de código aberto e você não precisa pagar um centavo por usá-las para construir seu site de comércio eletrônico. Um site de comércio eletrônico pronto, o que poderia ser melhor do que isso? – um site pronto para o mercado, talvez?

A maioria das plataformas de e-commerce fornece as lojas básicas de modelos de estoque. No entanto, com o crescimento de sonho de marketplaces (como Amazon, eBay, Etsy, Alibaba, Flipkart etc.) os empresários estão agora mais inclinados para esta nova modelo de multi-fornecedor de comércio eletrônico.

Como resultado, os desenvolvedores em todo o mundo criaram várias soluções que permitem aos proprietários de websites de modelos de inventário converter seu site em um mercado de vários fornecedores.

Neste blog, vou listar e discutir sobre as principais plataformas de e-commerce que podem ser facilmente usadas para desenvolver um mercado por meio de uma instalação simples de módulos.

1. Magento

Com atualmente mais de 251,287 Ao vivo lojas de comércio eletrônico em execução na plataforma Magento, é uma das plataformas de eCommerce em todo o mundo. Com quase 25% da quota total de mercado das plataformas de e-commerce, o Magento é uma marca popular que alimenta muitas outras grandes marcas como Burger King, Huawei, Pepe Jeans e Liverpool FC, etc.

Magento é uma plataforma de código aberto, e certamente uma plataforma ideal para construir um site de comércio eletrônico, especialmente um mercado de vários fornecedores. No entanto, apesar de o Magento apresentar vários recursos adequados para o comércio eletrônico B2B, ele não pode ser usado como uma plataforma de vários fornecedores em seu formato padrão.

Felizmente, devido à flexibilidade de ponta e à grande escalabilidade, o Magento pode ser introduzido nos recursos de vários fornecedores instalando a extensão do Marketplace.

O Extensão do mercado de vários fornecedores Magento é uma solução personalizada desenvolvida por desenvolvedores certificados do Magento. Simplesmente instalando esta extensão, você pode converter sua loja Magento com base em estoque existente em um site pronto para o mercado. Ele introduz alguns novos recursos para a plataforma Magento, que facilitam a operação de um site de mercado. Esses recursos extras incluem:

  • Gerenciamento para registro de conta de vendedor

  • Gerenciamento para aprovação e recusa de conta do vendedor

  • Gestão de diferentes lojas por diferentes vendedores

  • Gerenciamento para upload de produtos por vendedores

  • Gerenciamento para aprovação ou declinação de produto do vendedor

  • Gestão de Comissões do Marketplace e muito mais.

Além desses recursos, há vários outros recursos que você pode verificar na demonstração da extensão no link fornecido acima. Além disso, há também complementos do Marketplace para essa extensão, que podem ser usados ​​para adicionar alguns recursos mais avançados ao site do seu mercado.

2. PrestaShop

O PrestaShop é uma das principais plataformas de comércio eletrônico nas nações européias, que também está se popularizando em todo o mundo atualmente. Se você é proprietário de uma loja PrestaShop e pensa em possuir um site do Marketplace, você está no caminho certo.

Com a extraordinária flexibilidade e excelente suporte da comunidade, o PrestaShop é sempre a melhor escolha para o desenvolvimento de um site de mercado. Como o Magento, o PrestaShop não suporta o recurso de vários fornecedores por padrão. No entanto, com a comunidade PrestaShop altamente ativa, nada é impossível nesta plataforma.

O módulo do mercado PrestaShop Desenvolvido pela comunidade de especialistas, os desenvolvedores facilitam a conversão de uma loja PrestaShop em um site de mercado. Você só precisa poupar um minuto para instalar o módulo do Marketplace em sua loja, e bingo, você possui um site de marketplace agora.

Aqui está a descrição detalhada de algumas excelentes funcionalidades oferecidas por este módulo PrestaShop:

  • Fornece melhor controle sobre contas de vendedores

Como administrador de lojas, você tem total controle sobre o gerenciamento de várias contas de vendedor em sua loja do mercado. Você pode gerenciar e monitorar a lista de fornecedores de maneira coerente. Além disso, você também pode ver a lista de todos os vendedores em sua loja de mercado.

  • Autoridade para aceitar / rejeitar o pedido do vendedor

Uma das características marcantes desse módulo do Marketplace é a liberdade de armazenar o administrador para aceitar ou rejeitar as solicitações do vendedor para adicionar produtos em sua loja do mercado. Antes disso, todo vendedor precisa criar uma conta de vendedor no mercado que possa ser aprovada ou reprovada pelo administrador do mercado.

  • Gerencia as taxas de comissão para os vários fornecedores

O administrador da loja pode gerenciar suavemente as taxas de comissão de vários fornecedores com base em uma porcentagem global ou pode até definir taxas de comissão para vendedores individuais.

  • Capacidade de restringir categorias de produtos para vários vendedores

O administrador da loja pode decidir o número de categorias de produtos que podem ser usadas para adição de produtos por vários vendedores. Os vendedores podem fazer o upload dos produtos somente nas categorias permitidas.

  • Fácil gerenciamento da conta do vendedor em frente

Os vendedores registrados recebem um painel de vendedor para gerenciar suas lojas do Marketplace no próprio front end. É a melhor maneira de salvar os vendedores do complicado painel de back-office e fornecer os controles de gerenciamento mais fáceis e personalizados na própria frente.

Além desses recursos, existem controles separados para os fornecedores gerenciarem suas lojas. Além disso, este módulo também é apoiado por vários Addons de mercado que pode ser usado para estender seus recursos.

3. Drupal

O Drupal é um sistema de gerenciamento de conteúdo de código aberto como o WordPress. Como o WordPress, o Drupal também é apoiado por alguns módulos para ajudá-lo a obter um site de comércio eletrônico.

O Drupal não oferece recursos para desenvolver um site de marketing; mas como todas as outras plataformas, pode ser personalizado para fornecer as funcionalidades do mercado através do Módulo do mercado de Ubercart. No entanto, obter um site de mercado com o Drupal é um pouco complicado em comparação com o que temos visto no Magento e PrestaShop.

O uso do Drupal e do Ubercart requer algumas habilidades de desenvolvimento de sites, já que não é uma solução pronta para uso. É complicado para os iniciantes gerenciar o mercado sem alguma experiência em design, pelo menos.

No entanto, se você é um dono de negócios com experiência em tecnologia, com algumas habilidades de desenvolvimento ou pode contratar um desenvolvedor de Drupal, pode ser a plataforma mais flexível e mais desejável que se pode desejar para ter um site de marketplace. É difícil, é complicado, mas é cheio de potenciais também.

Com o Drupal e o Ubercart, você tem acesso a algumas ferramentas realmente fortes para o gerenciamento de administradores e fornecedores. Os vendedores têm todo o acesso para rastrear e cumprir a ordem que recebem no mercado. Além disso, eles também podem ver seu relatório de vendas.

A melhor opção que o administrador pode desejar é a capacidade das plataformas de trabalhar com os Pagamentos em Massa do PayPal, que podem ser usados ​​para distribuir os ganhos dos vendedores diretamente do painel de administração.

Gostou disso? Você também vai gostar disso