Получение статей затрат в логической ловушке счета-фактуры в SuiteCRM

С помощью логического крючка я пытаюсь обновить поля своих продуктов после сохранения счета.

На данный момент я понимаю, что мне нужно получить связанный счет-фактуру AOS_Products_Quotes, и оттуда я мог бы получить продукты, обновить необходимые поля и сохранить продукты. Это звучит примерно правильно?

Логический крючок срабатывает, но отношения не загружаются.

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

  }

Счет-фактура получает нормально. Но либо load_relationship ничего не делает ($ sInvoice не меняется с ним или без него), либо $aProductQuotes имеет значение Null.

Я работаю над SuiteCRM 7.8.3 и безуспешно пробовал его на 7.9.1. Что я делаю неправильно?


person Chris    schedule 17.06.2017    source источник


Ответы (1)


Я не знаком со спецификой SuiteCRM, но всегда предлагаю проверить:

  • Возвращаемое значение retrieve (): bean или null? Если null, значит, bean-компонент с данным идентификатором не найден. В таком случае $ oInvoice останется пустым (ваш комментарий предполагает, что здесь это не так)

  • Возвращаемое значение load_relationship (): true (успех) или false (сбой, проверка журналов)

И мне интересно, почему бы вам не использовать $ bean?

Вместо этого вы, кажется, получаете еще одну копию / ссылку на $ bean (и называете ее $ oInvoice)? Почему? Или вы хотели получить bean другого типа, который каким-то образом связан с $ bean?

Тогда у него наверняка нет того же id, что и у $ bean, если вы специально не закодировали его таким образом.

person Jay    schedule 17.06.2017