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


Вычисление. Копирование значения.


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

#21 freeman

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений

Отправлено 07 Апрель 2014 - 10:08

Просмотр сообщенияCbCoder (03 Апрель 2014 - 09:32) писал:

Как у вас там может быть позиции счета, если они в массиве $poz_sch ? Вы подставляете $poz_sch['Прайс-лист'] в некий запрос к таблице 431 (что за таблица?) и оттуда уже берете это самое поле f2331. Про которое я и спрашиваю, что это за поле, точнее его тип.
разобрался)
Спасибо.

След. Вопрос:
// Данные номенклатуры
if ($event['changed'][2331] && $line['Прайс-лист']['ID']) // Изменен прайс лист, на новое значение
   {
	 //$line['Ед. изм'] = $line['f2331']['f1160'];
	 $line['Ед. изм'] = $line['Прайс-лист']['Ед. изм.'];
	 //$line['Цена'] = $line['f2331']['f1169'];
	 $line['Цена'] = $line['Прайс-лист']['Розничная цена'];
	 //$line['Описание'] = $line['f2331']['f1159'];
	 $line['Описание'] = $line['Прайс-лист']['Описание'];
	}
  
if ($event['changed'][811] || $event['changed'][810])  // Изменены количество, либо цена
	$line['Сумма'] = $line['Кол-во'] * $line['Цена'];
if ($event['type']=='delete') $line['Сумма']=0; // Если строка удалена, сумма обнуляется
  
$line['Сумма скидки']=$line['Сумма']/100*$line['Скидка, %'];
$line['Итого']=$line['Сумма']-$line['Сумма скидки'];

[CODE]if ($line['Прайс-лист'] == "Доставка техники")
{
$line['Сумма'] = $line['Цена'] * $line['Кол-во']+2000;
}
$line['Счет']['Сумма'] = $line['Счет']['Сумма']+1; // Изменение суммы, приведет к запуску вычисления по рассчету суммы в счете

Не понимаю почему в
if ($line['Прайс-лист'] == "Доставка техники")
{
$line['Сумма'] = $line['Цена'] * $line['Кол-во']+2000;
}
не прибавляется +2000, т.е. происходит умножение результат встает в итого и в цену.

Сообщение отредактировал freeman: 07 Апрель 2014 - 10:09


#22 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 07 Апрель 2014 - 10:22

Раз не прибавляется, значит не выполняется условие if ($line['Прайс-лист'] == "Доставка техники"). Происходит только умножение, в соответствии с условием, которое выше по коду.

#23 freeman

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений

Отправлено 07 Апрель 2014 - 10:30

Просмотр сообщенияCbCoder (07 Апрель 2014 - 10:22) писал:

Раз не прибавляется, значит не выполняется условие if ($line['Прайс-лист'] == "Доставка техники"). Происходит только умножение, в соответствии с условием, которое выше по коду.

Извиняюсь, вставил не то, условие срабатывает на "Доставка техники", а доставка материалов - нет.

// Данные номенклатуры
if ($event['changed'][2331] && $line['Прайс-лист']['ID']) // Изменен прайс лист, на новое значение
   {
	 //$line['Ед. изм'] = $line['f2331']['f1160'];
	 $line['Ед. изм'] = $line['Прайс-лист']['Ед. изм.'];
	 //$line['Цена'] = $line['f2331']['f1169'];
	 $line['Цена'] = $line['Прайс-лист']['Розничная цена'];
	 //$line['Описание'] = $line['f2331']['f1159'];
	 $line['Описание'] = $line['Прайс-лист']['Описание'];
	}
  
if ($event['changed'][811] || $event['changed'][810])  // Изменены количество, либо цена
	$line['Сумма'] = $line['Кол-во'] * $line['Цена'];
if ($event['type']=='delete') $line['Сумма']=0; // Если строка удалена, сумма обнуляется
  
$line['Сумма скидки']=$line['Сумма']/100*$line['Скидка, %'];
$line['Итого']=$line['Сумма']-$line['Сумма скидки'];

if ($line['Прайс-лист'] == "Доставка техники")
{
  $line['Сумма'] = $line['Цена'] * $line['Кол-во'];
}
if ($line['Прайс-лист'] == "Доставка материалов")
{
  $line['Сумма'] = $line['Цена'] * $line['Кол-во']+2000;
}

$line['Счет']['Сумма'] = $line['Счет']['Сумма']+1; // Изменение суммы, приведет к запуску вычисления по рассчету суммы в счете


#24 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 07 Апрель 2014 - 10:38

Так мое предыдущее сообщение от этого никак не меняется. Условие не сработало - поэтому и прибавления нет.

#25 freeman

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений

Отправлено 07 Апрель 2014 - 10:56

почему может не срабатывать условие?
Поле прайс-лист - это связь с номенклатурой. Регистр соблюден.

#26 CbCoder

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

  • Программист ООО "КБ"
  • PipPipPip
  • 8 759 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 07 Апрель 2014 - 11:34

Вы сами почти ответили на свой вопрос. К полю связи нельзя обращаться таким образом, в массиве $line оно разворачивается в массив полей из связанной записи. Т.е. в вашем случае, сравнение должно быть таким:

if ($line['Прайс-лист']['Нужное поле'] == "Доставка материалов")

где "Нужное поле" - это необходимое поле из прайс-листа, где и лежит собственно "Доставка материалов"

#27 freeman

    Участник

  • Пользователи
  • PipPip
  • 29 сообщений

Отправлено 07 Апрель 2014 - 14:46

Спасибо, сработало!





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

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