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


Список счетов не сразу отображается сумма


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

#1 bryukhov

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

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

Отправлено 16 Ноябрь 2011 - 10:57

Выписал счет, заполнил позиции счета, сохраняю, не вычисляются цифры Сумма, Сумма с НДС.
Выхожу к списку счетов в созданном счете не показывается итоговая сумма (СУММА С НДС).
Повторно захожу просмотр счета, возвращаюсь все теперь отражается правильно.

Сообщение отредактировал bryukhov: 16 Ноябрь 2011 - 11:01


#2 CbCoder

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

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

Отправлено 16 Ноябрь 2011 - 12:36

Выложите вычисления из этих полей.

#3 bryukhov

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

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

Отправлено 19 Ноябрь 2011 - 10:19

Просмотр сообщенияРазработчик (16.11.2011, 12:36) писал:

Выложите вычисления из этих полей.
Конфигурация стандартная

Сообщение отредактировал bryukhov: 19 Ноябрь 2011 - 10:19


#4 CbCoder

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

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

Отправлено 21 Ноябрь 2011 - 09:58

Просмотр сообщенияbryukhov (19.11.2011, 11:19) писал:

Конфигурация стандартная
Дело в том, что стандартная конфигурация постоянно меняется, поэтому желательно разместить конкретный код вычислений данных полей. В ответ будет выложен исправленный вариант.

#5 Save

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

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

Отправлено 19 Январь 2012 - 09:46

Добрый день.
У меня такая же ситуация. Кб версии 1.9.4


Вот вычисления из поля "Сумма":

Цитата

$sqlQuery = "SELECT sum(f812) as summa FROM ".DATA_TABLE."74 WHERE status=0 AND f807={ID}";
$rt = mysql_query($sqlQuery);
$row = mysql_fetch_array($rt);
return $row['summa']?$row['summa']:"0.00";

А вот вычисления из поля "Сумма с НДС":

Цитата

$sqlQuery = "SELECT * FROM " .DATA_TABLE."43 WHERE id='{ID}'";
$rslt = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$drow = mysql_fetch_array($rslt);
$sqlQuery = "SELECT * FROM " .DATA_TABLE."50 WHERE id='".$drow["f654"]."'";
$rslt = mysql_query($sqlQuery) or user_error(mysql_error()."<br>".$sqlQuery."<br>", E_USER_ERROR);
$mrow = mysql_fetch_array($rslt);
$nds=0;$in_cost=0;
if ($mrow["f847"])
{
$nds=$mrow["f847"];
$in_cost=$mrow["f888"]!="Нет"?1:0;
}
if ($nds)
{
if ($in_cost) $res = $drow["f454"];
else $res = $drow["f454"]+$drow["f454"]*$nds/100;
}
else $res =$drow["f454"];
return $res?number_format($res,2,".",""):"0.00";

Приведу пример.
Нажимаю "Выписать счет", добавляю позицию, сохраняю. А поля "Сумма" и "Сумма с НДС" не обновляются. Они обновляются только после обновления страницы.

#6 CbCoder

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

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

Отправлено 19 Январь 2012 - 10:06

Сумма:
$sqlQuery = "SELECT sum(f810*f811) as summa FROM ".DATA_TABLE."74 WHERE status=0 AND f807={ID}";
$res = mysql_query($sqlQuery);
$row = mysql_fetch_array($res);
return $row['summa'];

Сумма с НДС должна обновится по идее.

#7 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

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

Отправлено 25 Январь 2012 - 22:55

не обновляется сумма счета
час с бубнами провел за вычислениями
в вашей демо версии работает, у меня нет

при изменение поля сумма в позиции счета:
$line['Сумма']=$line['Кол-во'] * $line['Цена'];
$total_sum = $line['Кол-во'] * $line['Цена'];
$total_sum = form_local_number($total_sum, "/2");
$sqlQuery = "UPDATE `".DATA_TABLE."43` SET `f454`='$total_sum' WHERE `id`='". $line['Счет']['ID'] ."'";
sql_query($sqlQuery);


при изменении полей цена и кол-во
$total_sum = $line['Кол-во'] * $line['Цена'];
$sqlQuery = "SELECT SUM(`f810` * `f811`) AS total_sum FROM `".DATA_TABLE."74` WHERE `status`='0' AND `f807`='".$line['Счет']['ID']."'";
$result = sql_query($sqlQuery);
$row = mysql_fetch_array($result);
$total_sum = form_local_number($total_sum, "/2");
$bill_sum = $row['total_sum'];
if ($line['Счет']['Наша компания']['НДС включен в стоимость']=="Да") $bill_sum_nds = $bill_sum;
else
  $bill_sum_nds = $bill_sum * (1 + $line['Счет']['Наша компания']['Ставка НДС'] / 100);
$bill_sum = form_local_number($bill_sum, "/2");
$bill_sum_nds = form_local_number($bill_sum_nds, "/2");
$line['Сумма'] = $total_sum."<script>document.getElementById('view_cell_454').innerHTML = '$bill_sum';document.getElementById('view_cell_889').innerHTML = '$bill_sum_nds';</script>";
код взят из демки
поля совпадают

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#8 CbCoder

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

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

Отправлено 26 Январь 2012 - 08:50

Что значит "не обновляется"? Не обновляется вообще, не обновляется после нажатия на Сохранить, или не обновляется моментально, но появляется после сохранения?

На приведенный код забейте - он глючный, от него отказались.

#9 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

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

Отправлено 26 Январь 2012 - 09:00

Просмотр сообщенияРазработчик (26 Январь 2012 - 08:50) писал:

Не обновляется вообще, не обновляется после нажатия на Сохранить, или не обновляется моментально, но появляется после сохранения?
не обновляется моментально
$line['Сумма'] = $total_sum."<script>...</script>";
мне не очень понятен этот механизм
я полагал, что $line[] записывает значения в базу
допустимо ли прописать что-то вроде

$line['Любое поле'] = $znachenie."...Здесь любой HTML...";
и куда будет это выведено?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#10 CbCoder

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

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

Отправлено 26 Январь 2012 - 09:09

Просмотр сообщенияРазработчик (26 Январь 2012 - 08:50) писал:

На приведенный код забейте - он глючный, от него отказались.


#11 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

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

Отправлено 26 Январь 2012 - 09:12

хорошо... забил
как выглядит не глючный?

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#12 CbCoder

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

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

Отправлено 26 Январь 2012 - 09:17

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

$line['Сумма'] = $line['Кол-во'] * $line['Цена'];


#13 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

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

Отправлено 26 Январь 2012 - 10:09

речь не про позицию счета
а про счет
при добавлении или удалении позиции - сумма не меняется пока не обновишь страницу
Ниже вычисления в таблице позиции счета
при изменении полей цена и количество:
$line['Сумма']=$line['Кол-во'] * $line['Цена'];
- это работает

при изменении поля сумма:
$sqlQuery = "SELECT SUM(`f810` * `f811`) AS total_sum FROM `".DATA_TABLE."74` WHERE `status`='0' AND `f807`='".$line['Счет']['ID']."'";
$result = sql_query($sqlQuery);
$row = mysql_fetch_array($result);
$line['Счет']['Сумма'] = $row['total_sum'];
- не работает

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#14 CbCoder

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

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

Отправлено 26 Январь 2012 - 10:20

Она и не должна меняться моментально. Моментальные вычисления на данный момент реализованы только для подтаблиц. В основной записи вычисления срабатывают только после сохранения. Для основных записей данный механизм будет реализован только в следующих версиях. Тот код что вы приводили - попытка нашего программиста обойти это ограничение через "пятую точку". Но данный подход неправилен, и он привел к глюкам в других местах.

#15 andibrag

    Прежде, чем задать вопрос, продумайте свое решение.

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

Отправлено 26 Январь 2012 - 10:23

значит несколько часов битвы с кодом "коту под хвост", обидно

Творческая группа "ТАВР".

www.TAVR.pro Художественная ковка, металлоконструкции.

www.СтолМет.рф Складные столы, стулья и системы для их хранения


#16 arsenal

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

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

Отправлено 26 Январь 2012 - 11:49

Просмотр сообщенияРазработчик (26 Январь 2012 - 10:20) писал:

Она и не должна меняться моментально. Моментальные вычисления на данный момент реализованы только для подтаблиц. В основной записи вычисления срабатывают только после сохранения. Для основных записей данный механизм будет реализован только в следующих версиях. Тот код что вы приводили - попытка нашего программиста обойти это ограничение через "пятую точку". Но данный подход неправилен, и он привел к глюкам в других местах.
А что такое "моентальные вычисления"? Вроде в описании не встречал.

#17 CbCoder

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

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

Отправлено 26 Январь 2012 - 11:54

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

В документации это все есть, смотрите обновленный раздел по вычислениям (в версии 1.9.5)

#18 bryukhov

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

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

Отправлено 26 Январь 2012 - 12:04

А где еще поработал Ваш программист?

#19 CbCoder

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

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

Отправлено 26 Январь 2012 - 12:09

Просмотр сообщенияbryukhov (26 Январь 2012 - 12:04) писал:

А где еще поработал Ваш программист?
?

#20 arsenal

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

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

Отправлено 26 Январь 2012 - 12:10

Просмотр сообщенияРазработчик (26 Январь 2012 - 11:54) писал:

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

В документации это все есть, смотрите обновленный раздел по вычислениям (в версии 1.9.5)
Просмотрел раздел "Вычисления" - там ничего про это не написано.





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

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