Перейти к содержимому


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

вычисление

Сообщений в теме: 2

#1 Almaz2017

    Участник

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина

Отправлено 31 Октябрь 2017 - 18:22

Добрый вечер.
У таблицы "Заявки" есть подтаблица "Позиции заявки", в которую заносятся данные о кол-ве и цене реализуемого товара.
Связь идет по полю "Номер заявки". Итоговая сумма из подтаблицы "Позиции заявки" идет в поле "Сумма" таблицы "Заявки".
Вставил вычисление на основе примера, отраженного в документации.
Нормально работает пока не происходит изменений в позициях заявки.
Поле изменений, итоговая сумма в подтаблице и сумма в заявке не совпадают.
Просьба подсказать как скорректировать код для перерасчета при изменениях.
Код следующий:

// Получаем сумму содержимого полей "Сумма" таблицы "Позиции заявки".
$sqlQuery = "SELECT sum(f6171) as summa FROM ".DATA_TABLE."361 WHERE status=0 AND f6081='".$line['Номер заявки']['ID']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
// Заносим полученную сумму в поле "Сумма" родительской таблицы, обращаясь через поле связи "Счет"
$line['Номер заявки']['Сумма'] = $summa;

#2 Tony999

    Активный участник

  • Пользователи
  • PipPipPip
  • 412 сообщений
  • Пол:Мужчина
  • Город:Санкт-Петербург

Отправлено 01 Ноябрь 2017 - 02:37

Надежнее будет разместить этот код как вычисление в таблице Заявки по изменению поля Сумма.
Последняя строка будет:
$line['Сумма'] = $summa;
А в таблице Позиции заявки, по изменению итога суммы подтаблицы:
 $line['Номер заявки']['Сумма'] = -1;

P.S. В первой строке тогда надо в конце:
$line['ID']
Кстати, Ваш код тоже должен работать, конструкция, опять же в конце первой строки, лучше такая:
$line['Номер заявки']['raw']
В подтаблице используйте вычисления только на изменение, а не на сохранение значения.

Сообщение отредактировал Tony999: 01 Ноябрь 2017 - 02:48

Умные сайты на заказ
https://info.crm-master.info

#3 Almaz2017

    Участник

  • Пользователи
  • PipPip
  • 15 сообщений
  • Пол:Мужчина

Отправлено 01 Ноябрь 2017 - 12:14

Благодарю.
Скорректировал $line['Номер заявки']['raw']. Заработало верно.
// Получаем сумму содержимого полей "Сумма" таблицы "Позиции заявки".
$sqlQuery = "SELECT sum(f6171) as summa FROM ".DATA_TABLE."361 WHERE status=0 AND f6081='".$line['Номер заявки']['raw']."'";
$res = sql_query($sqlQuery);
$row = sql_fetch_array($res);
$summa = $row['summa'];
// Заносим полученную сумму в поле "Сумма" родительской таблицы, обращаясь через поле связи "Счет"
$line['Номер заявки']['Сумма'] = $summa;





Количество пользователей, читающих эту тему: 2

0 пользователей, 2 гостей, 0 анонимных