Estoy haciendo un nuevo método de envío y necesito agregar una nueva columna para pagar las tarifas de envío. Los datos provendrían de la configuración del método de envío personalizado, por ejemplo, la descripción del método. O algún campo de entrada donde el cliente puede agregar información (los datos probablemente se guardarían entre comillas y luego en orden).
Probablemente la parte más fácil de todo es implementar una plantilla usando
Magento_Checkout/web/template/shipping.html
Solo necesita esto
<div data-bind="text: method.description"></div>
El problema es que no puedo entender cómo agregar datos personalizados. No es suficiente agregar esto:
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;
}
Los datos para html provienen de js rates (), que obtiene datos de 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>
Después de esto, hay muchos pasos mientras que algo realmente se recopila. encontré
Magento \ Quote \ Model \ Cart \ ShippingMethodConverter modelToDataObject ()
parecía lo más prometedor, pero si trato de agregarle mi atributo, no pasa nada.
Entonces, mi pregunta es, si realmente hay una manera de agregar nuevos datos a las tarifas de envío. En M1 fue posible. Sería una locura si M2 no fuera posible.
Hay muchas razones por las cuales esto debería ser posible. Por ejemplo, si quisiera hacer un método de recoger en la tienda con múltiples tiendas desplegables o algo similar.