Divida a ordem em ordens separadas e calcule a remessa separadamente com ups e fedex e endereços de origem diferentes


8

Quando um cliente chega à nossa loja e faz check-out de vários itens, preciso escrever um módulo para calcular o frete com base em vários fatores. Decidi de minha pesquisa que o seguinte deveria acontecer:

Primeiro, preciso separar os itens do carrinho em pedidos diferentes para o cálculo da remessa. Quero que os pedidos sejam classificados pelo valor do atributo "vendor". "Fornecedor" é um atributo que adicionamos ao sistema aplicável a todos os produtos simples. Digamos que no carrinho haja uma camisa rosa com o valor "fornecedor" "1", um lápis com o valor "fornecedor" "1" e uma camisa azul com o valor "fornecedor" "2". Todos os itens com valor "fornecedor" "1" precisam ser de um pedido, enquanto o item com valor "fornecedor" "2" precisa ser um pedido diferente. Vejo que essa outra pergunta responde a esse dilema, mas depois levanta outra.

Segundo, preciso calcular a remessa com as funcionalidades padrão de remessa UPS e Fedex do Magento, mas com um endereço de origem determinado pelo número do valor do "fornecedor" (armazenado em uma tabela separada do banco de dados). Todas as sugestões são bem-vindas!

Estou usando trechos de código para começar aqui e aqui .

Provavelmente terei várias perguntas, mas as primeiras são aquelas em negrito acima.

ATUALIZAÇÃO Decidi que seria melhor substituir o módulo principal do Magento de várias remessas para fazer o que estou tentando fazer. Por favor, ajude-me a encontrar onde e o que colocar para manipular a funcionalidade multiponto do Magento para dividir os itens de um pedido em remessas com base no atributo "fornecedor"! Eu estou lutando com isso.


11
O multishipping de Magento faz isso nativamente. Talvez você possa utilizar a funcionalidade multiponto sem exibi-la ao cliente?
philwinkle

Fora do tópico: você se importaria de aceitar respostas ou encerrar suas antigas perguntas em aberto? Estamos tentando muito obter a taxa de resposta durante a versão beta. Obrigado.
philwinkle

11
Vou examinar as respostas multishipping e inaceitáveis ​​agora. Muitas vezes, não aceitei porque mudei para outra coisa e voltarei a ela. Contudo eu me olhar e ver se eu perdi algum
CaitlinHavener

Outra alternativa é implementar algo como o Unirgy uDropship, que também incorpora a funcionalidade de tipo de fornecedor que você está escrevendo; mas fornece aos fornecedores um portal para remessa, gera etiquetas de remessa e muito mais. Não trabalho para, e não sou endossada pela Unirgy.
philwinkle

11
Não quero usar uma extensão de dropship. Existem muitos fatores pelos quais não posso.
precisa saber é o seguinte

Respostas:


3

Algo a considerar aqui é que você pode precisar aplicar apenas algumas alterações cosméticas de front-end aos modelos de multiponto ( template/checkout/multishipping/) para que os dois pedidos apareçam simplesmente como um pedido ao cliente. Os modelos shipping.phtmle overview.phtmldividem os dois pedidos, cada um com um cabeçalho (Endereço 1 de 2, etc.) e outra cópia para mostrar que são dois pedidos.

Em vez do padrão, sugiro que seja um pouco criativo nesses modelos, para que os dois pedidos sejam simplesmente divididos, para que apareçam como dois itens de linha separados.

O próximo passo seria lidar com diferentes origens de remessa com base no atributo do fornecedor. Talvez isso possa ser feito no Mage_Shipping_Model_Shipping. Você pode ver no topo, onde o Magento está pegando o endereço de origem da configuração e, mais adiante, no requestToShipment()método, os elementos do endereço de origem são atribuídos à solicitação de envio (que eu suponho que seria usada mais tarde, dependendo do método de envio) chamado).

Pode ser pelo menos uma direção a seguir. Lendo sua pergunta e sua atualização, tenho a impressão de que você está tornando isso mais difícil do que o necessário. Lembre-se sempre de que geralmente é melhor deixar o Magento fazer o que quer e modificar apenas pequenos bits para lidar com seus casos específicos. A maior parte do que você precisa já está pronta, então parece um pouco tolo reescrever os componentes de envio múltiplo quando houver opções mais simples.


Como, então, calcularia a remessa para cada remessa agrupada por atributo de fornecedor?
CaitlinHavener

Os cálculos de remessa não mudam, pois Mage_Shipping_Model_Shippingsimplesmente substituem o endereço de origem na solicitação de remessa pela origem atribuída a esse fornecedor. O Magento continuaria com seus negócios e aplicaria as taxas de envio aplicáveis ​​a esse pedido. Eu poderia ver um dos módulos de remessa do WebShopApps sendo útil aqui, pois permite atribuir métodos de remessa com base em vários critérios. - novamente, isso é tudo em teoria, eu nunca fiz algo assim antes, então pode haver algumas advertências (sempre existem). -
pspahn

Estou verificando essas extensões de aplicativos da loja virtual. Eu acho que no momento estou confuso com ... é o que classe / método diz à classe Mage_Shipping_Model_Shipping "ei, aqui está uma ordem e esses são os itens nela". Onde posso encontrar isso?
CaitlinHavener

11
Dê uma olhada /app/code/core/Mage/Sales/Model/Quote.php- Lembre-se de que o Magento não é tão linear quanto os outros carrinhos de compras. Desça a toca do coelho e veja como as cotações são alteradas para pedidos (e créditos, etc.). Em algum momento, você encontrará o (s) método (s) que deseja alterar. Novamente, como eu disse anteriormente, geralmente é vantajoso investir simplesmente em um módulo de back-end de qualidade (e com a mesma importância, no suporte) que realizará o que você precisa rapidamente. Algumas porcas e parafusos não gostam de ser trocados.
Pspahn 1/1

Se sua disponibilidade para mais detalhes, ajude! Muito obrigado pela ajuda aqui também. Você está me salvando! Este é o projeto Magento mais difícil que já tive! magento.stackexchange.com/questions/7635/...
CaitlinHavener
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.