O pedido de edição do administrador perde o endereço de entrega


10

O cliente entra no pedido com diferentes endereços de entrega / cobrança.

se precisarmos editar o pedido no administrador, ele criará um novo pedido, no novo pedido o endereço de entrega será padronizado como 'igual ao faturamento' e o endereço de entrega original será perdido!

  1. alguém pode confirmar se sua instalação faz o mesmo.
  2. Alguém tem uma solução.


2
I manter algumas 1,7 lojas e nenhum deles tem essa
Sander Mangel

@SanderMangel, obrigado. então agora precisamos descobrir por que isso está acontecendo na minha instalação. Alguma sugestão?
Mendel

Verifique seus logs, Magento e Apache. Se estiver tudo bem, desative todas as extensões de terceiros via app / etc / modules para ver se isso causa isso. Se isso não ajuda ... bem ... então você tem um problema maior
Sander Mangel

@SanderMangel, desativei todas as extensões de terceiros, não fez a diferença. Verifiquei a exceção e os logs do sistema e não vejo erros que coincidam com o tempo em que
clicamos em

Respostas:


3

Eu tive esse problema. Meu problema era que isso same_as_billing_addressfoi definido no endereço de entrega pelo front-end; portanto, o back-end pensou que não havia um segundo endereço e ignorou a renderização.

Verifique seu front-end, se ele envia dados corretos.


quando o cliente digita o pedido, ele pode selecionar Enviar para este endereço ou endereço diferente, se optar por enviar para um endereço diferente, ele pode inserir um endereço de entrega. a página do pedido de vendas do administrador mostra os dois endereços até eu editar o pedido. na tabela sales_order_flat, não vejo a coluna same_as_billing_address, mas vejo shipping_address_id e billing_address_id e eles são diferentes. Talvez eu não esteja procurando no lugar certo?
Mendel

Encontrei o campo same_as_billing na tabela sales_flat_quote_address e está definido como 0 para os pedidos em que um cliente inseriu um endereço de entrega diferente.
Mendel

Então você tem outro problema :-(
Fabian Blechschmidt 13/03

Também verifiquei isso e sua solução também não se aplica a mim. same_as_billing_addressestá definido corretamente.
Louis B.

2

Não consegui reproduzi-lo no Magento 1.9.

Não há nenhuma correção de bug mencionada nas notas de versão, no entanto, encontrei o seguinte nas notas de versão 1.8.0.0 :

Correções de pedidos administrativos e notas de crédito

  • Quando você cria um pedido usando o Painel do administrador e especifica um endereço de cobrança padrão e um endereço de entrega padrão, os endereços são usados ​​corretamente.

Possivelmente, isso está relacionado e o bug também foi corrigido. As notas de versão nem sempre estão completas.


1

Eu encontrei o mesmo problema nas versões mais recentes do Magento 1.9.2.4 e 2.0.5.

Cenário:

  1. O hóspede faz um pedido
  2. O pedido tem diferentes endereços de cobrança e entrega
  3. Admin edita o pedido no Painel do administrador

Resultado: o endereço de entrega é perdido e o endereço de cobrança é exibido.

Razão: O método _isSameAsBilling () sempre retorna true se o pedido foi feito por um Convidado. Não é um comportamento adequado.

O método em questão:

Magento 2.0.5: /app/code/Magento/Quote/Model/Quote/Address.php

protected function _isSameAsBilling()
    {
        return $this->getAddressType() == \Magento\Quote\Model\Quote\Address::TYPE_SHIPPING &&
            ($this->_isNotRegisteredCustomer() ||
            $this->_isDefaultShippingNullOrSameAsBillingAddress());
    }

Magento 1.9.2.4: /app/code/core/Mage/Sales/Model/Quote/Address.php

protected function _isSameAsBilling()
    {
        return ($this->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING
            && ($this->_isNotRegisteredCustomer() || $this->_isDefaultShippingNullOrSameAsBillingAddress()));
    }

Como você pode ver se o Cliente não está registrado, o método _isSameAsBilling () retorna true, mesmo que os endereços de cobrança e entrega sejam diferentes.

Isso tem sérias implicações em todos os pedidos editados pelo Painel do administrador, pois o endereço de entrega original é perdido.

Isso é um bug ou estou faltando alguma coisa?


1

Teve o mesmo problema com o Magento 1.7 e corrija com esta alteração em: app / code / core / Mage / Adminhtml / Model / Sales / Order / Create.php

Você precisa substituir a turma de maneira limpa :)

Altere o método: _initShippingAddressFromOrder com este código:

protected function _initShippingAddressFromOrder(Mage_Sales_Model_Order $order)
{
    $this->getQuote()->getShippingAddress()->setCustomerAddressId('');
    Mage::helper('core')->copyFieldset(
        'sales_copy_order_shipping_address',
        'to_order',
        $order->getShippingAddress(),
        $this->getQuote()->getShippingAddress()
    );
    $this->getQuote()->getShippingAddress()->setSameAsBilling(false);
    if($order->getShippingAddress()->getCustomerAddressId() && $order->getShippingAddress()->getCustomerAddressId() == $order->getBillingAddress()->getCustomerAddressId()) {
        $this->getQuote()->getShippingAddress()->setSameAsBilling(true);
    }
}

Obrigado, essa instalação do magento passou por várias atualizações e extensões e não posso mais reproduzir o problema, portanto não posso testar sua correção.
Mendel
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.