2017-06-17 1 views
1

Via un crochet logique, j'essaie de mettre à jour les champs de mes produits, après qu'une facture ait été enregistrée. Ce que je comprends jusqu'à présent, c'est que j'ai besoin d'obtenir la facture liée AOS_Products_Quotes et à partir de là, je pourrais obtenir les produits, mettre à jour les champs requis et enregistrer les produits. Est-ce que ça te paraît correct?Obtention d'éléments de ligne dans un crochet logique de facture dans SuiteCRM

Le hook logique est en cours de déclenchement mais les relations ne se chargent pas.

function decrement_stocks ($bean, $event, $arguments) { 
    //$bean->product_value_c = $bean->$product_unit_price * $bean->product_qty; 

    $file = 'custom/modules/AOS_Invoices/decrement.txt'; 

    // Get the Invoice ID: 
    $sInvoiceID = $bean->id; 
    $oInvoice = new AOS_Invoices(); 
    $oInvoice->retrieve($sInvoiceID); 
    $oInvoice->load_relationship('aos_invoices_aos_product_quotes'); 
    $aProductQuotes = $oInvoice->aos_invoices_aos_product_quotes->getBeans(); 

    /* 
    $aLineItemslist = array(); 
    foreach ($oInvoice->aos_invoices_aos_product_quotes->getBeans() as $lineitem) { 
     $aLineItemslist[$lineitem->id] = $lineitem; 
    } 
    */ 
    $sBean = var_export($bean, true); 
    $sInvoice = var_export($oInvoice, true); 
    $sProductQuotes = var_export($aProductQuotes, true); 

    $current = $sProductQuotes . "\n\n\n------\n\n\n" . $sInvoice . "\n\n\n------\n\n\n" . $sBean; 

    file_put_contents($file, $current); 

    } 

La facture est récupérée très bien. Mais soit load_relationship ne fait rien ($ sInvoice ne change pas avec ou sans) et $aProductQuotes est nul.

Je travaille sur SuiteCRM 7.8.3 et l'ai essayé sur 7.9.1 sans succès. Qu'est-ce que je fais mal?

Répondre

0

Je ne suis pas au courant des détails de SuiteCRM, mais je vous suggère de toujours vérifier:

  • Valeur de retour de récupérer(): haricots ou null? Si null, aucun bean avec l'ID donné n'a été trouvé. Dans ce cas $ oInvoice resterait vide (Votre commentaire suggère que ce n'est pas le cas ici si)

  • Valeur de retour de load_relationship(): vrai (succès) ou faux (échec, vérifier les journaux)

Et je me demande, pourquoi n'utilisez-vous pas $ bean? A la place, vous semblez recevoir une autre copie/référence de $ bean (et l'appeler $ oOvo)? Pourquoi? Ou vouliez-vous recevoir un bean de type différent qui est en quelque sorte connecté à $ bean?

Alors il n'a sûrement pas le même id comme $ bean, sauf si vous l'avez spécifiquement codé de cette façon.