first $package_price
- это определение запроса, которое никогда не выполняется, поэтому данных там не будет.
Во-вторых, вам действительно следует рассмотреть возможность использования suitecrm pQuery
с подготовленным массивом операторов в качестве аргументов и не использовать егонепосредственно на запрос (инъекция sql).Выдает что-то вроде этого pQuery($query, ["arg1", "arg2"])
, и запрос будет содержать ?
символов, в которых вы хотите заменить аргументы (порядок соблюден).
Если вы хотите запустить обновление aos_products, тогда вам нужна логика after_saveхук для модуля aos_products
, так как он редактируется.
Это означает, что do_UpdateProductPrices($bean, $events, $args)
аргумент $ bean в этой строке будет представлять ПРОДУКТ, а не fsubscription
.
Третий, вам нужно будет проверить, обновлена ли цена if($bean->fetched_row['price']!=$bean->price){
перед обновлением.Наконец, давайте попробуем этот код (пожалуйста, измените, поскольку я не знаю имени компонента)
function do_UpdateProductPrices($bean, $events, $args)
{
global $db;
if($bean->fetched_row['price']!=$bean->price){
//means that the price has changed
$fsubscriptionBean = new fsubscription();
$fsubscriptionBean->retrieve($bean->parent_id);
$fsubscriptionBean->product_product_unit_price0 = $bean->price;
$fsubscriptionBean->product_product_unit_price1 = $bean->price;
}