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

私の知る限り、トラックオブジェクトは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あなたの出荷対象です。


ところで、MG2の注文出荷コメントを取得する方法も知っているのでしょうか。もしそうならここに投稿してください。ありがとう。
Roshan ruzaik 2017年

貨物に追跡URLを追加するにはどうすればよいですか?
プルショタムシャルマ2018

@Roshanruzaik、貨物にコメントを追加する方法を尋ねている場合、これは私が行った方法です:$ commentText = 'Test comment'; //コメントインターフェース:\ Magento \ Sales \ Api \ Data \ ShipmentCommentCreationInterface $ comment = $ this-> commentInterface-> setComment($ commentText); //以下の例のように、出荷の作成中に$ commentをパラメータの1つとして使用します。//出荷注文サービス:\ Magento \ Sales \ Model \ ShipOrder $ this-> shipOrderService-> execute($ orderId、$ shippedItems、$ notify、$ includeComment、$ comment、$ tracks);
Sarjan Gautam

こんにちは、デジタルピアニズムの追跡番号で@Raphaelです。carrier_codeはmagento2の「sales_shipment_track」テーブルに保存されていますが、配送料はどこに保存されますか?
Nagaraju K


8

受け入れられた回答に加えて、非推奨のsaveメソッドの代わりにリポジトリを使用することをお勧めします。追跡作成後の顧客通知も追加しました。

/** @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/...
クリス・ウェン

@carol Castro、注文IDをここに追加するにはどうすればよいですか?
ムジャヒド
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.