Como adiciono o número de rastreamento à remessa de pedidos atual no Magento 2?

10

Eu encontrei exemplos de códigos para o Magento 1.x. Mas não tenho ideia de como fazer isso no Magento 2.

Alguém pode descrever como implementar isso usando injeção de dependência (DI) ?

Obrigado.

$trackingDetail = array(
    'carrier_code' => 'ups',
    'title' => 'United Parcel Service',
    'number' => 'TORD23254WERZXd3', // Replace with your tracking number
);

$track = Mage::getModel('sales/order_shipment_track')->addData($trackingDetail);
$shipment->addTrack($track);


$transactionSave = Mage::getModel('core/resource_transaction')
->addObject($shipment)
->addObject($shipment->getOrder())
->save();
Roshan ruzaik
fonte

Respostas:

12

AFAIK o objeto de trilha é o mesmo em M2.

No entanto, o restante do código foi alterado.

$data = array(
    'carrier_code' => 'ups',
    'title' => 'United Parcel Service',
    'number' => 'TORD23254WERZXd3', // Replace with your tracking number
);

$track = $this->trackFactory->create()->addData($data);
$shipment->addTrack($track)->save();

Onde $this->trackFactoryuma instância de Magento\Sales\Model\Order\Shipment\TrackFactorye $shipmenté seu objeto de remessa.

Raphael na Digital Pianism
fonte
BTW Gostaria de saber se você sabe como obter comentários sobre o envio de pedidos também para o MG2. Se você o fizer, poste aqui. Obrigado.
precisa saber é o seguinte
Como adicionar URl de rastreamento na remessa?
Purushotam Sharma
@ Roshanruzaik, se você está perguntando como adicionar comentários à remessa, é assim que eu fiz: $ commentText = 'Test comment'; // Interface do comentário: \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // use $ comment como um dos parâmetros enquanto cria a remessa, como no exemplo abaixo: // envie o serviço de pedidos: \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ SHIPItems, $ notifyI, $ includeComment, $ comment, $ tracks);
Sarjan Gautam 4/06
Oi @Raphael no número de rastreamento de pianismo digital, e o carrier_code está salvando na tabela "sales_shipment_track" no magento2, mas onde ele salvará a taxa de envio?
Nagaraju K
você pode por favor me ajude sobre esta questão semelhante magento.stackexchange.com/questions/268844/...
Kris Wen
8

Adicionando à resposta aceita, seria uma boa idéia usar repositórios em vez do método obsoleto de salvar. Também foi adicionada a notificação do cliente após a criação do rastreamento.

/** @var Magento\Sales\Model\Order\ShipmentRepository */
protected $_shipmentRepository;

/** @var Magento\Shipping\Model\ShipmentNotifier */
protected $_shipmentNotifier;

/** @var Magento\Sales\Model\Order\Shipment\TrackFactory */
protected $_trackFactory; //missing ;

public function __construct(
  \Magento\Shipping\Model\ShipmentNotifier $shipmentNotifier, 
  \Magento\Sales\Model\Order\ShipmentRepository $shipmentRepository, 
  \Magento\Sales\Model\Order\Shipment\TrackFactory $trackFactory)
{
  $this->_shipmentNotifier = $shipmentNotifier;
  $this->_shipmentRepository = $shipmentRepository;
  $this->_trackFactory = $trackFactory;
}
public function addTrack($shipment, $carrierCode, $description, $trackingNumber) 
{
    /** Creating Tracking */
    /** @var Track $track */
    $track = $this->_trackFactory->create();
    $track->setCarrierCode($carrierCode);
    $track->setDescription($description);
    $track->setTrackNumber($trackingNumber);
    $shipment->addTrack($track);
    $this->_shipmentRepository->save($shipment);

    /* Notify the customer*/
    $this->_shipmentNotifier->notify($shipment);
 }

Onde $ shipment é o seu objeto de envio. Notify notificará (enviará email) ao usuário e adicionará um item de histórico à coleção de histórico de status do pedido.

Carol Castro
fonte
Não funcionou para mim, criei a classe auxiliar, eu sou capaz de buscar getDeiveryTime (), getCancelTime (), getDispatchTime (), mas não consigo obter o número de rastreamento. Você pode fornecer uma lista de funções para buscar detalhes descanso da remessa
insoftservice
você pode ajudar nessa questão semelhante? magento.stackexchange.com/questions/268844/...
Kris Wen
@ Carol Castro, como podemos adicionar o ID do pedido aqui?
Mujahidh 26/09/19