Da un ordine specifico, desidero creare la spedizione di tale ordine e anche assegnare il numero di tracciamento a esso in modo programmatico. Per favore aiuto. GrazieMagento creare la spedizione con il numero di tracciatura al livello di programmazione
risposta
La domanda era solo per scopo di condivisione delle conoscenze.
Si può capire alcuni punti da Ref_Link
// $order_id = Order ID
$_order = Mage::getModel('sales/order')->load($order_id);
if($_order->canShip())
{
$shipmentId = Mage::getModel('sales/order_shipment_api')->create($_order->getIncrementId(), $itemsarray ,'your_comment' ,false,1);
echo $shipmentId; // Outputs Shipment Increment Number
$trackmodel = Mage::getModel('sales/order_shipment_api')
->addTrack($shipmentId,'your_shipping_carrier_code','your_shipping_carrier_title','carrier_tracking_number');
}
$itemsarray
= formato spiegato qui Ref_link
questo è tutto!
Un frammento di codice semplice.
Spero che aiuti qualcuno.
La risposta accettata è corretta e ha funzionato per me su CE 1.9, ma ho voluto espanderci.
Non è necessario preoccuparsi del parametro $itemsQty
, è possibile passare un array()
vuoto o lasciarlo fuori completamente. È un parametro facoltativo e il metodo prepareShipment()
in app\code\core\Mage\Sales\Model\Service\Order.php
verificherà i dati e eseguirà una ricerca, se necessario.
Se si desidera includere il numero di tracciamento nell'e-mail di spedizione, assicurarsi di aggiungere prima il rilevamento e quindi utilizzare Mage::getModel('sales/order_shipment_api')->sendInfo($shipmentIncrementId)
.
Snippet di codice:
$shipmentApi = Mage::getModel('sales/order_shipment_api');
//pass false for email, unless you want Magento to send the shipment email without any tracking info
//could also be written as $shipmentIncrementId = $shipmentApi->create($order->getIncrementId());
$shipmentIncrementId = $shipmentApi->create($order->getIncrementId(), array(), '' , false, 0);
//add tracking info ($shippingCarrier is case sensitive)
$shipmentApi->addTrack($shipmentIncrementId, $shippingCarrier, $shippingTitle, $trackingNumber);
//send shipment email with tracking info
$shipmentApi->sendInfo($shipmentIncrementId);
creare() firma del metodo:
public function create($orderIncrementId, $itemsQty = array(), $comment = null,
$email = false, $includeComment = false)
Vedi app\code\core\Mage\Sales\Model\Order\Shipment\Api.php
per tutti i metodi.
Si noti che $ shipmentId è in realtà l'ID di incremento della spedizione – kmdsax