Estou criando um novo método de envio e preciso adicionar uma nova coluna às taxas de envio da finalização da compra. Os dados viriam de configurações personalizadas do método de envio, por exemplo, descrição do método. Ou algum campo de entrada em que o cliente pode adicionar informações (os dados provavelmente seriam salvos em cotação e posteriormente em ordem).
Provavelmente, a parte mais fácil de tudo é implementar modelo usando
Magento_Checkout/web/template/shipping.html
Só precisa disso
<div data-bind="text: method.description"></div>
O problema é que não consigo descobrir como adicionar dados personalizados. Não basta adicionar isso:
public function collectRates(RateRequest $request)
{
if (!$this->isActive()) return false;
$method = $this->rateMethodFactory->create();
$method->setData('carrier', $this->getCarrierCode());
$method->setData('carrier_title', $this->getConfigData('title'));
$method->setData('method_title', $this->getConfigData('title'));
$method->setData('method', $this->getCarrierCode());
$method->setPrice($this->_price);
$method->setData('cost', $this->_price);
// custom
$method->setData('description', $this->getConfigData('description'));
$result = $this->rateResultFactory->create();
$result->append($method);
return $result;
}
Os dados para html são provenientes de js rates (), que obtém dados da API:
<route url="/V1/carts/:cartId/shipping-methods" method="GET">
<service class="Magento\Quote\Api\ShippingMethodManagementInterface" method="getList"/>
<resources>
<resource ref="Magento_Cart::manage" />
</resources>
</route>
Depois disso, existem muitas etapas enquanto algo é coletado. eu encontrei
Magento \ Quote \ Model \ Cart \ ShippingMethodConverter modelToDataObject ()
isso parecia o mais promissor, mas se eu tentar adicionar meu atributo a ele, nada acontece.
Então, minha pergunta é: se existe realmente uma maneira de adicionar novos dados às taxas de remessa? No M1 foi possível. Seria louco se M2 não fosse possível.
Existem muitas razões pelas quais isso deve ser possível. Por exemplo, se eu quisesse usar o método pick in store com várias lojas suspensas ou algo semelhante.