2010-07-01 7 views
1

Je travaille sur un script qui est hors de cadre magento et sera programmé pour obtenir tous les envois et numéro de suivi. Après avoir obtenu ces envois et numéro de suivi, je vais vérifier auprès de l'expéditeur et mettre à jour le statut de l'expédition et de la commande en fonction de si elle est expédiée/numérisée ou livrée.Magento - Cronjob en dehors de magento pour mettre à jour le statut de l'expédition

suivante est à moitié fait le code et je suis coincé,

<?php 
    require_once 'app/Mage.php'; 
    Mage::app('default'); 

$myShipment=Mage::getModel('sales/order_shipment'); 
$shipment=Mage::getResourceModel('sales/order_shipment_collection') 
    ->addAttributeToSelect('*'); 

$allIds=$shipment->getAllIds(); 
foreach($allIds as $thisId) { 
    $myShipment->load($thisId)->getAllTrackings(); 
    echo "<pre>"; 
    print_r($myShipment); 
    echo "</pre>"; 

} 

S'il vous plaît aider,

Merci et salutations, Saurabh

+3

Y at-il une question dont vous avez besoin de répondre ici? – Paolo

+1

Spécifier pourquoi vous êtes coincé (j'ai fait X, j'ai attendu Y, mais j'ai obtenu Z) aiderait les gens à comprendre où vous êtes. Rappelez-vous, nous n'avons pas passé les 3 dernières heures sur ceci :) –

+0

salut je veux savoir comment mettre à jour le statut d'expédition et l'état de la commande basé sur les informations disponibles de la méthode d'expédition. – Saurabh

Répondre

3

Une fois que l'expédition et la facture sont créés pour une commande est réglé sur un statut de "Complet". Vous ne savez pas exactement ce que vous voulez changer, mais si vous avez des statuts personnalisés configurés dans votre installation magento, vous pouvez utiliser la méthode setStatus() de la classe de commande.

$myShipment->getOrder()->setStatus("YourCustomStatus"); 

Je ne pense pas que les envois ont des statuts, mais vous pouvez ajouter un commentaire à une expédition en appelant addComment (commentaire $, notifyCustomer $), où la première variable est une chaîne et la seconde est bool.

$myShipment->addComment("01/01/2010 06:55, Out for delivery", true); 

Vous pouvez également ajouter un commentaire à la commande en utilisant une méthode similaire:

$myShipment->getOrder()->addComment("01/01/2010 06:55, Out for delivery", true); 
+0

Salut silvo, je l'ai fait comme tu l'as dit mais quand j'ai fait $ myShipment-> save(); J'ai perdu l'identifiant de suivi et les articles de l'expédition. encore chat faire fonctionner comme je veux ... je veux que l'expédition doit être marqué et expédié état de la commande j'ai collé mon code complet ici http://pastebin.org/382465 Cordialement, Saurabh – Saurabh

1

Vous pouvez définir le statut d'expédition - il y a un champ pour ce qui est NULL pour moi lorsque vous interrogez via shipment.list API

est ici une décharge:

Array 
(
    [0] => Array 
     (
      [store_id] => 1 
      [total_weight] => 
      [total_qty] => 1.0000 
      [email_sent] => 1 
      [order_id] => 3 
      [customer_id] => 1 
      [shipping_address_id] => 6 
      [billing_address_id] => 5 
      [shipment_status] => 
      [increment_id] => 100000001 
      [created_at] => 2010-11-11 15:41:41 
      [updated_at] => 2010-11-11 15:44:05 
      [shipment_id] => 1 
     ) 

Il ne semble pas Comme vous pouvez le définir via l'API WS, ce qui signifie que vous devrez inclure mage.php dans votre script externe, puis mettre à jour l'envoi via magento (comme silvo l'a montré ci-dessus). Désolé, je n'ai pas la syntaxe à portée de main mais je suppose que vous mettriez à jour en fonction de l'identifiant de l'envoi plutôt que de la commande. Cela signifie que vous devrez d'abord créer un envoi (encore une fois, cela peut être fait via l'API webservices via la méthode shipment.create (détails sur la même page que le lien précédent)

J'espère que cela vous met sur Si quelqu'un a un code de travail pour le faire (ce qui m'a amené à ce poste à l'origine) S'IL VOUS PLAÎT se sentir libre de partager. :)

+0

aussi, si vous prévoyez de mettre à jour, il semble que ce champ accepte des valeurs entières: 'shipment_status' int (10) par défaut NULL, – Andrew

Questions connexes