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


Сумма прописью без рублей и копеек


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

#1 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 23 Март 2011 - 22:08

скажите, у функции SumPropis есть аналог chisloPropis или параметры, указав которые можно получить число прописью без указания "рублей хх копеек"?

И еще: как smarty (печатной форме) можно изменить формат переменной? Дело в том, что из базы числа передаются разделенные пробелом - 1 115 454,12. арифметические действия с ними не работают, т.к. простые действия в скобках берут часть до пробела, а функция math фыдает ошибку. пробовал удалять пробелы и указывать формат функциями string_format и textformat. не получается :(

#2 CbCoder

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

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

Отправлено 24 Март 2011 - 10:13

Просмотр сообщенияmak (23.3.2011, 22:08) писал:

скажите, у функции SumPropis есть аналог chisloPropis или параметры, указав которые можно получить число прописью без указания "рублей хх копеек"?
Да, есть такие параметры. Полный формат функции: {SumPropis field=var currency="value" cents="value" caps=0|1} , где field - переменная поля, currency - имя валюты (по умолчанию - "рубли"), cents - имя сотых валюты (по умолчанию - "копейки"), caps - отображать первую букву заглавной или нет (по умолчанию - 0, т.е. нет). Например для Казахстана это может выглядеть как {SumPropis field=$Summa currency="тенге" cents="тиын" caps=1}. Если же вам не нужно отображение валюты и копеек, нужно указать currency="none" и cents="none".

Просмотр сообщенияmak (23.3.2011, 22:08) писал:

И еще: как smarty (печатной форме) можно изменить формат переменной? Дело в том, что из базы числа передаются разделенные пробелом - 1 115 454,12. арифметические действия с ними не работают, т.к. простые действия в скобках берут часть до пробела, а функция math фыдает ошибку. пробовал удалять пробелы и указывать формат функциями string_format и textformat. не получается :(
В самом smarty - никак. Для этого мы добавили функцию {SumFormat value="value" digits=digits}, где value - ваше выражение с операциями, digits - число цифр после запятой в результате.

#3 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 24 Март 2011 - 11:36

спасибо, как раз то, что надо!

Кстати, как то был разговор про:

Цитата

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

В документации нет ни одной вашей функции с полным описанием синтаксиса, кроме разве что data_table. Может у нее есть дополнительные, не указанные в документации возможности?

Было бы здорово, если опишите все добавленные вами функции в документации, а уж в отдельном или не отдельном разделе не существенно... :(

#4 CbCoder

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

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

Отправлено 24 Март 2011 - 11:54

Просмотр сообщенияmak (24.3.2011, 11:36) писал:

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

#5 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 29 Март 2011 - 14:26

кстати, по госту, копейки в документах, должны быть цифрами а не прописью.
не мешало бы добавить и такой параметр, иначе приходится копейки самому парсить :rolleyes:

#6 CbCoder

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

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

Отправлено 30 Март 2011 - 09:29

Просмотр сообщенияmak (29.3.2011, 15:26) писал:

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

#7 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 30 Март 2011 - 12:18

Просмотр сообщенияРазработчик (30.3.2011, 9:29) писал:

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

это слова бухгалтера. как говорится за что купил, за то продал. ))

#8 CbCoder

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

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

Отправлено 30 Март 2011 - 13:32

Просмотр сообщенияmak (30.3.2011, 13:18) писал:

это слова бухгалтера
Да, наш бухгалтер тоже подтвердил. Исправления внесли, просто обновите ревизию.

#9 mak

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

  • Активный пользователь
  • PipPipPip
  • 207 сообщений

Отправлено 30 Март 2011 - 18:02

спасибо. обновление ревизии белается также как и версии?

делаем бекап, все сносим, ставим и заливаем бекап?

#10 CbCoder

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

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

Отправлено 31 Март 2011 - 08:18

Просмотр сообщенияmak (30.3.2011, 19:02) писал:

спасибо. обновление ревизии белается также как и версии?

делаем бекап, все сносим, ставим и заливаем бекап?
Да.

#11 Alej

    Новичок

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

Отправлено 09 Июнь 2011 - 09:43

Просмотр сообщенияРазработчик (24.3.2011, 10:13) писал:

В самом smarty - никак. Для этого мы добавили функцию SumFormat(value="value", digits=digits), где value - ваше выражение с операциями, digits - число цифр после запятой в результате.
Не подскажите ли можно ли эту функцию SumFormat использовать внутри {assign} в печатных формах для вычислений и каков тогда синтаксис?

#12 CbCoder

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

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

Отправлено 09 Июнь 2011 - 10:05

В каких печатных формах? Если Вы про шаблоны печати - то разумеется да, об этом собственно и шла речь в теме.

#13 Alej

    Новичок

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

Отправлено 09 Июнь 2011 - 13:08

Просмотр сообщенияРазработчик (9.6.2011, 10:05) писал:

В каких печатных формах? Если Вы про шаблоны печати - то разумеется да, об этом собственно и шла речь в теме.
Да, конечно про шаблоны печати.
И как будет выглядеть? Что-то типа:
{assign var="sum1" value=SumFormat(value="`$subtable.Ves*$subtable.Kolichestvo/1000`", digits=3)`"}

#14 CbCoder

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

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

Отправлено 09 Июнь 2011 - 13:15

Вам именно переменную что ли необходимо назначить? Почему просто функцию не вывести? См. документацию по Smarty

{SumFormat value="value", digits=digits}

#15 CbCoder

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

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

Отправлено 09 Июнь 2011 - 13:22

Кстати, почему у Вас косые кавычки в выражении, не совсем понял?

Просмотр сообщенияAlej (9.6.2011, 14:08) писал:

value="`$subtable.Ves*$subtable.Kolichestvo/1000`"
Правильно писать так: value="{$subtable.Ves}*{$subtable.Kolichestvo}/1000", т.е. с фигурными скобками вокруг переменных и без лишних кавычек

#16 Alej

    Новичок

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

Отправлено 09 Июнь 2011 - 13:38

Просмотр сообщенияРазработчик (9.6.2011, 13:15) писал:

Вам именно переменную что ли необходимо назначить? Почему просто функцию не вывести? См. документацию по Smarty

{SumFormat value="value", digits=digits}
Там необходимо сделать не сложные арифметические вычисления в цикле foreach, поэтому без присваивания переменной не обойтись.
А арифметические операции в документации описаны уж очень скудно (видимо, рассчитана на знатоков php, коим я не являюсь :), потому и "плаваю" в синтаксисе прямых, косых и двойных кавычек...

#17 CbCoder

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

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

Отправлено 09 Июнь 2011 - 13:43

Тогда насчет присваивания уточняйте в документации Smarty, честно говоря сам не знаю как там функции в аргументы помещать. Скорее всего в тех же фигурных кавычках.

#18 Alej

    Новичок

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

Отправлено 09 Июнь 2011 - 13:55

Просмотр сообщенияРазработчик (9.6.2011, 13:43) писал:

Тогда насчет присваивания уточняйте в документации Smarty, честно говоря сам не знаю как там функции в аргументы помещать. Скорее всего в тех же фигурных кавычках.
Буду пробовать...
А с какой версии появилась эта SumFormat? Может у меня в 1.8.5 ее вообще нету?

#19 Alej

    Новичок

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

Отправлено 09 Июнь 2011 - 14:14

Просмотр сообщенияРазработчик (9.6.2011, 13:43) писал:

... как smarty (печатной форме) можно изменить формат переменной? Дело в том, что из базы числа передаются разделенные пробелом - 1 115 454,12. арифметические действия с ними не работают, т.к. простые действия в скобках берут часть до пробела, а функция math фыдает ошибку.
Кстати, если вернуться к истокам данной темы, неужели никак нельзя изменить формат данных, получаемых из базы, чтобы не было этих пробелов?? Какие-нибудь настройки, системные переменные, фильтры вывода и пр.?

#20 CbCoder

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

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

Отправлено 09 Июнь 2011 - 14:23

Просмотр сообщенияAlej (9.6.2011, 14:55) писал:

Может у меня в 1.8.5 ее вообще нету?
С этого и надо было начинать. В 1.8.5 пробелов вообще нет, непонятно что Вас смущает тогда. SumFormat там есть, но используется исключительно для вывода десятичных нулей после запятой.





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

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