Конфликт с переменными в автоматизации действий

Ответить
Lexxor2011
Спонсор
Спонсор
Сообщения: 70
Зарегистрирован: 01 фев 2023, 18:12
Имя: Алексей Грибков
Откуда: Россия, г. Южно-Сахалинск
Организация: ООО "Интер Энерджи"

Конфликт с переменными в автоматизации действий

Сообщение Lexxor2011 »

У меня есть такой код в Автоматизации, чтобы менять статусы в полях 2х сущностей:

Код: Выделить всё

// Изменяем статус Входящих и Исходящих заказов, после проведения оплаты входящего счета
// Если счет за материалы - есть заказ, и дата не пустая - оплата прошла
if([642]==147 && !is_null([646])){
	$out_po_id=[915]; // ID Исходящего заказа
	$in_po_id=[parent_item_id]; // ID Входящего заказа
	$invoice_sum=[645]; // Сумма счета
	$in_po_sum_query=db_query("select sum(field_507*field_499) as in_po_sum from app_entity_52 where field_513=" . $in_po_id);
	if($in_po_sum_arr=db_fetch_array($in_po_sum_query)){
	$in_po_sum=$in_po_sum_arr[in_po_sum]; // Сумма закупки Входящего заказа
    }
	$out_po_sum_query=db_query("select sum(field_507*field_499) as out_po_sum from app_entity_52 where field_514=" . $out_po_id);
  if($out_po_sum_arr=db_fetch_array($out_po_sum_query)){
    $out_po_sum=$out_po_sum_arr[out_po_sum]; // Сумма Исходящего заказа
  }
$paid_invoces_sum_query=db_query("select sum(field_645) as paid_invoces from app_entity_42 where field_646 IS NOT NULL and parent_item_id=" . $in_po_id);
if($paid_invoces_sum_arr=db_fetch_array($paid_invoces_sum_query)){
	$paid_invoces_sum=$paid_invoces_sum_arr[paid_invoces]; // Сумма оплаченных счетов
	}
			$paid_out_sum_query=db_query("select sum(field_645) as paid_out from app_entity_42 where field_646 IS NOT NULL and field_915=" . $out_po_id);
if($paid_out_sum_arr=db_fetch_array($paid_out_sum_query)){
				$paid_out_sum=$paid_out_sum_arr[paid_out]; // Сумма оплаченных счетов по данному Исходящему заказу
				}
	$allout_po_sum=0;
	$allout_po_query=db_query("select id from app_entity_38 where parent_item_id=" . $in_po_id);
	if($allout_po_arr=db_fetch_array($allout_po_query)){
		while($allout_po_arr=db_fetch_array($allout_po_query)){
			$allout_po_id=$allout_po_arr['id'];
			$po_sum_query=db_query("select sum(field_507*field_499) as po_sum from app_entity_52 where field_514=" . $allout_po_id);
			if($po_sum_arr=db_fetch_array($po_sum_query)){
			$allout_po_sum= $allout_po_sum + $po_sum_arr[po_sum]; // Сумма всех Исходящих заказов
			}
		}
	}			
$out_po_entity_id=38;
$in_po_entity_id=29;
	if($invoice_sum>=$out_po_sum || $paid_out_sum>=$out_po_sum){
		$out_data=['field_918' => 174]; // статус "Оплачено"
	}elseif($invoice_sum<$out_po_sum){
		$out_data=['field_918' => 175]; // статус "Оплачено частично"
	}
	if($paid_invoces_sum>=$in_po_sum){
		$in_data=['field_279' => '153,72']; // статус "Заказан полностью, Оплачен полностью"
	}elseif($paid_invoces_sum<$in_po_sum && $allout_po_sum==$in_po_sum){
		$in_data=['field_279' => '153,71']; // статус "Заказан полностью, Оплачен частично"
	}elseif($paid_invoces_sum<$in_po_sum && $allout_po_sum<$in_po_sum){
		$in_data=['field_279' => '152,71']; // статус "Заказан частично, Оплачен частично"
	}
items::update_by_id($out_po_entity_id,$out_po_id,$out_data);
items::update_by_id($in_po_entity_id,$in_po_id,$in_data);
}
До недавнего времени все работало нормально, пока в одну из задействованных сущностей я не добавил новое поле.
Простое числовое поле, которое даже не участвует в данной автоматизации, да и сама эта автоматизация запускается только при сохранении или добавлении записи в другой (но дочерней к данной) сущности. Так вот, при попытке что-то вести в поля этой формы выходит длинная страница со следующими данными:
Warning: Use of undefined constant in_po_sum - assumed 'in_po_sum' (this will throw an Error in a future version of PHP) in /home/users/i/.../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 9

Warning: Use of undefined constant out_po_sum - assumed 'out_po_sum' (this will throw an Error in a future version of PHP) in /home/users/i/.../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 13

Warning: Use of undefined constant paid_invoces - assumed 'paid_invoces' (this will throw an Error in a future version of PHP) in /home/users/i/.../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 17

Warning: Use of undefined constant paid_out - assumed 'paid_out' (this will throw an Error in a future version of PHP) in /home/users/i/.../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 21

. . .

Warning: Use of undefined constant in_po_sum - assumed 'in_po_sum' (this will throw an Error in a future version of PHP) in /home/users/i/.../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 9

Warning: Use of undefined constant out_po_sum - assumed 'out_po_sum' (this will throw an Error in a future version of PHP) in /home/users/i/.../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 13

Warning: Use of undefined constant paid_invoces - assumed 'paid_invoces' (this will throw an Error in a future version of PHP) in /home/users/i/.../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 17

Warning: Use of undefined constant paid_out - assumed 'paid_out' (this will throw an Error in a future version of PHP) in /home/users/i/../domains/.../plugins/ext/classes/processes/processes.php(1682) : eval()'d code on line 21

Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 262144 bytes) in /home/users/i/.../domains/.../includes/classes/fields_types.php on line 1092

Warning: Unknown: Cannot call session save handler in a recursive manner in Unknown on line 0

Warning: Unknown: Failed to write session data using user defined save handler. (session.save_path: /home/users/i/.../tmp) in Unknown on line 0
Возможно, где-то у меня ошибка в коде, но хоть убей, не могу понять где.. Но до недавнего времени то все работало, и ничего в данном коде я не менял.. :shock:
Аватара пользователя
Fait
Инвестор
Инвестор
Сообщения: 974
Зарегистрирован: 19 ноя 2020, 17:46
Имя: Максим Балакшеев
Откуда: Россия, Златоуст
Организация: ИП Балакшеев Максим Георгиевич

Re: Конфликт с переменными в автоматизации действий

Сообщение Fait »

Lexxor2011 писал(а): 16 май 2023, 18:55

Код: Выделить всё

// Изменяем статус Входящих и Исходящих заказов, после проведения оплаты входящего счета
// Если счет за материалы - есть заказ, и дата не пустая - оплата прошла
if([642]==147 && !is_null([646])){
	$out_po_id=[915]; // ID Исходящего заказа
	$in_po_id=[parent_item_id]; // ID Входящего заказа
	$invoice_sum=[645]; // Сумма счета
	$in_po_sum_query=db_query("select sum(field_507*field_499) as in_po_sum from app_entity_52 where field_513=" . $in_po_id);
	if($in_po_sum_arr=db_fetch_array($in_po_sum_query)){
	$in_po_sum=$in_po_sum_arr[in_po_sum]; // Сумма закупки Входящего заказа
    }
	$out_po_sum_query=db_query("select sum(field_507*field_499) as out_po_sum from app_entity_52 where field_514=" . $out_po_id);
  if($out_po_sum_arr=db_fetch_array($out_po_sum_query)){
    $out_po_sum=$out_po_sum_arr[out_po_sum]; // Сумма Исходящего заказа
  }
$paid_invoces_sum_query=db_query("select sum(field_645) as paid_invoces from app_entity_42 where field_646 IS NOT NULL and parent_item_id=" . $in_po_id);
if($paid_invoces_sum_arr=db_fetch_array($paid_invoces_sum_query)){
	$paid_invoces_sum=$paid_invoces_sum_arr[paid_invoces]; // Сумма оплаченных счетов
	}
			$paid_out_sum_query=db_query("select sum(field_645) as paid_out from app_entity_42 where field_646 IS NOT NULL and field_915=" . $out_po_id);
if($paid_out_sum_arr=db_fetch_array($paid_out_sum_query)){
				$paid_out_sum=$paid_out_sum_arr[paid_out]; // Сумма оплаченных счетов по данному Исходящему заказу
				}
	$allout_po_sum=0;
	$allout_po_query=db_query("select id from app_entity_38 where parent_item_id=" . $in_po_id);
	if($allout_po_arr=db_fetch_array($allout_po_query)){
		while($allout_po_arr=db_fetch_array($allout_po_query)){
			$allout_po_id=$allout_po_arr['id'];
			$po_sum_query=db_query("select sum(field_507*field_499) as po_sum from app_entity_52 where field_514=" . $allout_po_id);
			if($po_sum_arr=db_fetch_array($po_sum_query)){
			$allout_po_sum= $allout_po_sum + $po_sum_arr[po_sum]; // Сумма всех Исходящих заказов
			}
		}
	}			
$out_po_entity_id=38;
$in_po_entity_id=29;
	if($invoice_sum>=$out_po_sum || $paid_out_sum>=$out_po_sum){
		$out_data=['field_918' => 174]; // статус "Оплачено"
	}elseif($invoice_sum<$out_po_sum){
		$out_data=['field_918' => 175]; // статус "Оплачено частично"
	}
	if($paid_invoces_sum>=$in_po_sum){
		$in_data=['field_279' => '153,72']; // статус "Заказан полностью, Оплачен полностью"
	}elseif($paid_invoces_sum<$in_po_sum && $allout_po_sum==$in_po_sum){
		$in_data=['field_279' => '153,71']; // статус "Заказан полностью, Оплачен частично"
	}elseif($paid_invoces_sum<$in_po_sum && $allout_po_sum<$in_po_sum){
		$in_data=['field_279' => '152,71']; // статус "Заказан частично, Оплачен частично"
	}
items::update_by_id($out_po_entity_id,$out_po_id,$out_data);
items::update_by_id($in_po_entity_id,$in_po_id,$in_data);
}
...........
Возможно, где-то у меня ошибка в коде, но хоть убей, не могу понять где.. Но до недавнего времени то все работало, и ничего в данном коде я не менял.. :shock:
Приведённый вам код не мог работать раньше, ведь в нём ошибки синтаксиса, и текст ошибки явно указывает на строки, где этот синтаксис нарушен.
Конкретнее, в строках 9, 13, 17 и 21.

Попробуйте этот код:

Код: Выделить всё

// Изменяем статус Входящих и Исходящих заказов, после проведения оплаты входящего счета
// Если счет за материалы - есть заказ, и дата не пустая - оплата прошла
if([642]==147 && !is_null([646])){
	$out_po_id=[915]; // ID Исходящего заказа
	$in_po_id=[parent_item_id]; // ID Входящего заказа
	$invoice_sum=[645]; // Сумма счета
	$in_po_sum_query=db_query("select sum(field_507*field_499) as in_po_sum from app_entity_52 where field_513=" . $in_po_id);
	if($in_po_sum_arr=db_fetch_array($in_po_sum_query)){
	$in_po_sum=$in_po_sum_arr['in_po_sum']; // Сумма закупки Входящего заказа
    }
	$out_po_sum_query=db_query("select sum(field_507*field_499) as out_po_sum from app_entity_52 where field_514=" . $out_po_id);
  if($out_po_sum_arr=db_fetch_array($out_po_sum_query)){
    $out_po_sum=$out_po_sum_arr['out_po_sum']; // Сумма Исходящего заказа
  }
$paid_invoces_sum_query=db_query("select sum(field_645) as paid_invoces from app_entity_42 where field_646 IS NOT NULL and parent_item_id=" . $in_po_id);
if($paid_invoces_sum_arr=db_fetch_array($paid_invoces_sum_query)){
	$paid_invoces_sum=$paid_invoces_sum_arr['paid_invoces']; // Сумма оплаченных счетов
	}
			$paid_out_sum_query=db_query("select sum(field_645) as paid_out from app_entity_42 where field_646 IS NOT NULL and field_915=" . $out_po_id);
if($paid_out_sum_arr=db_fetch_array($paid_out_sum_query)){
				$paid_out_sum=$paid_out_sum_arr['paid_out']; // Сумма оплаченных счетов по данному Исходящему заказу
				}
	$allout_po_sum=0;
	$allout_po_query=db_query("select id from app_entity_38 where parent_item_id=" . $in_po_id);
	if($allout_po_arr=db_fetch_array($allout_po_query)){
		while($allout_po_arr=db_fetch_array($allout_po_query)){
			$allout_po_id=$allout_po_arr['id'];
			$po_sum_query=db_query("select sum(field_507*field_499) as po_sum from app_entity_52 where field_514=" . $allout_po_id);
			if($po_sum_arr=db_fetch_array($po_sum_query)){
			$allout_po_sum= $allout_po_sum + $po_sum_arr['po_sum']; // Сумма всех Исходящих заказов
			}
		}
	}			
$out_po_entity_id=38;
$in_po_entity_id=29;
	if($invoice_sum>=$out_po_sum || $paid_out_sum>=$out_po_sum){
		$out_data=['field_918' => 174]; // статус "Оплачено"
	}elseif($invoice_sum<$out_po_sum){
		$out_data=['field_918' => 175]; // статус "Оплачено частично"
	}
	if($paid_invoces_sum>=$in_po_sum){
		$in_data=['field_279' => '153,72']; // статус "Заказан полностью, Оплачен полностью"
	}elseif($paid_invoces_sum<$in_po_sum && $allout_po_sum==$in_po_sum){
		$in_data=['field_279' => '153,71']; // статус "Заказан полностью, Оплачен частично"
	}elseif($paid_invoces_sum<$in_po_sum && $allout_po_sum<$in_po_sum){
		$in_data=['field_279' => '152,71']; // статус "Заказан частично, Оплачен частично"
	}
items::update_by_id($out_po_entity_id,$out_po_id,$out_data);
items::update_by_id($in_po_entity_id,$in_po_id,$in_data);
}
Lexxor2011
Спонсор
Спонсор
Сообщения: 70
Зарегистрирован: 01 фев 2023, 18:12
Имя: Алексей Грибков
Откуда: Россия, г. Южно-Сахалинск
Организация: ООО "Интер Энерджи"

Re: Конфликт с переменными в автоматизации действий

Сообщение Lexxor2011 »

Fait писал(а): 17 май 2023, 02:43 Приведённый вам код не мог работать раньше, ведь в нём ошибки синтаксиса, и текст ошибки явно указывает на строки, где этот синтаксис нарушен.
Конкретнее, в строках 9, 13, 17 и 21.
Да, спасибо! Как раз параллельно рыл и понял, что сам накосячил, кавычки пропустил. Сейчас по всему приложению ревизию делаю :?
Все равно, спасибо за подсказку и подтверждение моей ошибки! Впредь буду повнимательней! :roll: :oops:
Ответить