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


Вычисления в шаблоне рассылки


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

#1 Davyd80

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

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

Отправлено 11 Июнь 2015 - 14:29

Добрый день!
Написал шаблон рассылки
{if {$ДОЛГ} gt 0}Размер задолженности на {$Текущая дата}г. составляет {$ДОЛГ} руб.{else}{/if}
{if {$ДОЛГ} lt 0}Размер переплаты на {$Текущая дата}г. составляет {$ДОЛГ} руб.{else}{/if}
Срабатывает когда сумма >0, но не срабатывает когда сумма <0, т.е. отрицательная, например если значение -0,68. Где я ошибся?

#2 maksn

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

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

Отправлено 12 Июнь 2015 - 14:21

Просмотр сообщенияDavyd80 (11 Июнь 2015 - 14:29) писал:

Добрый день!
Написал шаблон рассылки
{if {$ДОЛГ} gt 0}Размер задолженности на {$Текущая дата}г. составляет {$ДОЛГ} руб.{else}{/if}
{if {$ДОЛГ} lt 0}Размер переплаты на {$Текущая дата}г. составляет {$ДОЛГ} руб.{else}{/if}
Срабатывает когда сумма >0, но не срабатывает когда сумма <0, т.е. отрицательная, например если значение -0,68. Где я ошибся?

Не проверял, но скорее всего так
{if {$ДОЛГ} gt 0}Размер задолженности на {$Текущая дата}г. составляет {$ДОЛГ} руб.{else}Размер переплаты на {$Текущая дата}г. составляет {$ДОЛГ} руб.{/if}

"...Сижу, паяю. CRM починяю..."
Мои разработки

#3 CbCoder

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

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

Отправлено 12 Июнь 2015 - 14:25

Блин, написал вчера ответ и похоже не отправил. Вот он:

Цитата

Пишите лучше нормально < и >, а не "gt lt", даже я не помню что это.

Да, и {else} необязателен, если за ним все равно пусто.


#4 Davyd80

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

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

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

Просмотр сообщенияmaksn (12 Июнь 2015 - 14:21) писал:

Не проверял, но скорее всего так
{if {$ДОЛГ} gt 0}Размер задолженности на {$Текущая дата}г. составляет {$ДОЛГ} руб.{else}Размер переплаты на {$Текущая дата}г. составляет {$ДОЛГ} руб.{/if}
Дело в том, что если ДОЛГ=0, то должно быть пустое поле, поэтому так сделал.

Побывал < и > пишет ошибку
Syntax Error in template "string:" on line 6 "{if {$field4281}&gt;0}<span style="font-size:14px;">Размер задолженности на {$field5591}г. составляет&nbsp;<strong style="color: rgb(255, 0, 0); font-size: 16px;">{$field4281}</strong>&nbsp;руб.</span></div>" - Unexpected ";"


#5 CbCoder

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

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

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

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

#6 Davyd80

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

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

Отправлено 17 Июнь 2015 - 09:48

Попробовал, во первых символы < и > в исходном коде преобразуются в bt и lt, а во вторых так и не работает если сумма меньше 0.

#7 Davyd80

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

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

Отправлено 17 Июнь 2015 - 09:52

Не работает именно на -0,68 например, а на -1,50 работает, т.е. он не понимает десятичные :(

#8 CbCoder

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

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

Отправлено 17 Июнь 2015 - 10:36

Потому что десятичные в русском формате, а не в привычном программе американском, с точкой. Нужно заменить запятую на точку, например через модификатор replace.

#9 Davyd80

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

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

Отправлено 17 Июнь 2015 - 10:49

Не подскажите как это сделать, а то сайт smarty.net не работает :(

#10 CbCoder

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

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

Отправлено 17 Июнь 2015 - 12:22

Да я вот сам точно не помню, тоже хотел дать ссылку на smarty.net, а не получилось. Вроде как {{$ДОЛГ}|replace:',','.'}, но не уверен.

#11 maksn

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

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

Отправлено 17 Июнь 2015 - 12:54

Просмотр сообщенияDavyd80 (17 Июнь 2015 - 10:49) писал:

Не подскажите как это сделать, а то сайт smarty.net не работает :(
http://stackoverflow...place-in-smarty :rolleyes:
"...Сижу, паяю. CRM починяю..."
Мои разработки

#12 Davyd80

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

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

Отправлено 17 Июнь 2015 - 13:51

Спасибо большое за помощь, все так, только вместо "," нужно ":" {{$ДОЛГ}|replace:',':'.'}
Еще проблема, что между числами пробел, пытался убрать так
{{$ДОЛГ}|replace:',':'.',|replace:' ':''}
Пишет ошибку :(

#13 CbCoder

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

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

Отправлено 17 Июнь 2015 - 14:37

А если так:

{{{$ДОЛГ}|replace:',':'.'}|replace:' ':''}

Ну или:

{({$ДОЛГ}|replace:',':'.')|replace:' ':''}

В общем, как-то поиграться со скобками. Или присвоить первый результат в переменную (через assign), а уже к ней - вторичный replace.

#14 Davyd80

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

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

Отправлено 17 Июнь 2015 - 16:03

Спасибо, первый вариант правильный.





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

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