
magento 2
Este erro ocorre porque na requisição de métodos de envio de estimativa existe o campo store_pickup_id dentro do endereço, e a interface correspondente Magento\Quote\Api\Data\AddressInterface não possui nenhum método acessório para isso.
Como um checkout funciona através da API do Magento, todos os valores que você passa devem ter métodos getter e setter na interface.
Recomendo que verifique:
corpo do pedido formulário de endereço de entrega quaisquer componentes e mixins de terceiros
Desabilite todos os módulos de terceiros e ainda está vendo o mesmo comportamento.
exception.log mostra o erro vindo de
[2019-08-06 22:05:07] main.CRITICAL: ID de endereço de cliente inválido 160022 {“exception”:”[object] (Magento\Framework\Exception\NoSuchEntityException(código: 0): ID de endereço de cliente inválido 160022 em …. vendor/magento/module-quote/Model/QuoteAddressValidator.php:79)”}
Isso é QuoteAddressValidator::doValidate(AddressInterface $address, ?int $customerId), que está sendo chamado pela linha 130 no mesmo arquivo. O segundo parâmetro para doValidate é definido como: $cart->getCustomerIsGuest() ? null : $cart->getCustomer()->getId()
No entanto, $cart->getCustomerIsGuest() está me reportando como convidado, quando na verdade não sou. Fiz login durante o checkout e continuo atualizando a página de checkout, por isso deve estar bem claro agora que estou logado. Na verdade, ele está me mostrando todos os meus endereços, então parece claramente que estou logado dentro.
Por fim, getCustomerIsGuest() extrai as informações da tabela de cotação, que verifiquei e descobri que, para meu customer_id, minha cotação ativa tinha a coluna customer_is_guest definida como 1. Não tenho certeza de como a cotação (mesclada do meu carrinho de convidados) acabou com customer_is_guest ainda definido como 1, mas depois de limpá-lo, o problema desapareceu (pelo menos por enquanto).
A consulta a seguir me ajudou a encontrar as outras citações na mesma situação:
SELECT entity_id, customer_id FROM quote WHERE customer_id != 0 AND customer_is_guest = 1;
Então eu os redefino para o status adequado:
UPDATE quote SET customer_is_guest = 0 WHERE customer_id != 0 AND customer_is_guest = 1;
As únicas citações que encontrei neste estado pertenciam a contas de teste. Continuarei com os testes com módulos de terceiros habilitados e comentarei novamente se encontrar alguma outra coisa que mexe indevidamente com o campo customer_is_guest.
Site novo há semanas e nenhuma página indexada? Confira a caixinha de visibilidade em Leitura, o noindex no HTML e…
O retorno do array_map voltou com índice 0, 1, 2 e o código que dependia da chave quebrou. Entenda quando…
Dump de 12 GB que demora horas porque arrasta report_event e cron_schedule. Faça o backup em duas passadas, guarde só…
Escreveu a preference e o Magento 2 continua usando a classe original? Confira a área do di.xml, o generated/code e…
Cadastrou Cor direto na aba Atributos do produto e o filtro por atributo vem vazio. Veja como identificar o tipo,…
Precisa de um SELECT no banco do cliente e só tem SSH? O wp db query pega a senha do…