Magento 2에서 현재 주문 배송에 추적 번호를 어떻게 추가합니까?


10

Magento 1.x의 샘플 코드를 찾았습니다. 그러나 Magento 2 에서이 작업을 수행하는 방법을 모르겠습니다.

누구든지 의존성 주입 (DI)을 사용하여 이것을 구현하는 방법을 설명 할 수 있습니까 ?

감사.

$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();

답변:


12

AFAIK 트랙 객체는 M2에서 동일합니다.

그러나 나머지 코드는 변경되었습니다.

$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();

어디 $this->trackFactory의 인스턴스 Magento\Sales\Model\Order\Shipment\TrackFactory$shipment발송 객체입니다.


BTW MG2에 대해서도 주문 배송 의견을 얻는 방법을 알고 있는지 궁금합니다. 당신이 그것을 여기에 게시하십시오. 감사.
Roshan ruzaik

배송시 추적 URL을 추가하는 방법은 무엇입니까?
Purushotam Sharma

@Roshanruzaik, 발송물에 의견을 추가하는 방법을 묻는다면 다음과 같습니다. $ commentText = 'Test comment'; // 댓글 인터페이스 : \ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment ($ commentText); // 아래와 같이 배송을 생성하는 동안 $ comment를 매개 변수 중 하나로 사용합니다. // ship order service : \ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute ($ orderId, $ shippedItems, $ notify, $ includeComment, $ comment, $ tracks);
Sarjan Gautam 2016 년

디지털 피아니즘 홀짝이 추적 번호에서 @Raphael을 보내주십시오. 그리고 carrier_code가 magento2의 "sales_shipment_track"테이블에 저장되지만 배송료는 어디에 저장됩니까?
Nagaraju K

이 비슷한 질문에 도움을 줄 수 있습니까
Kris Wen

9

허용되는 답변에 더 이상 사용되지 않는 저장 방법 대신 리포지토리를 사용하는 것이 좋습니다. 또한 추적 생성 후 고객 알림을 추가했습니다.

/** @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);
 }

여기서 $ shipment는 발송물입니다. Notify는 사용자에게 알리고 (이메일 보내기) 주문 상태 내역 모음에 내역 항목을 추가합니다.


헬퍼 클래스를 만들었으므로 getDeiveryTime (), getCancelTime (), getDispatchTime ()을 가져올 수 있지만 추적 번호를 가져올 수 없습니다. 발송물의 나머지 세부 정보를 가져 오는 기능 목록을 제공 할 수 있습니까
insoftservice

이 비슷한 질문에 도움을 줄 수 있습니까? magento.stackexchange.com/questions/268844/…
Kris Wen

@carol Castro, 여기서 주문 ID를 어떻게 추가 할 수 있습니까?
Mujahidh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.