Twilight CMS - это система управления сайтом, которая вставляет в шаблон блоки контента. Данное сверхупрощенное определение позволяет использовать её возможности для выставления счетов, актов, счетов фактур и даже для оформления договоров и других документов. Для этого необходимо сверстать шаблоны типовых документов в HTML, забить в базу реквизиты контрагентов и далее в шаблонах прописать некоторые макросные связки для вывода в нужных местах фамилий, названия компаний и суммы. Подпись и печать в графическом виде - по желанию. Макросы Math и Multiply позволяют формировать суммы и произведения чисел, округлять их до нужной точности. Макрос Replace - выбрасывать ненужные подстроки или производить поиск и замену. Макрос Propis формирует строки, в которых числа заменяются на числительные прописью, а макросы UpperCase и LowerCase позволяют преобразовать строки в верхний или нижний регистр. Уникальные идентификаторы для записей позволяют делиться счетами с клиентами без опасений что они получать доступ к чужим документам, но для усиления защиты можно использовать закрытую зону (макросы Auth/RegistrationConfirm) и шифрование строк (макросы Crypt и Decrypt).
Используя данные макросы можно достаточно легко собрать мини-CRM систему для небольшой компании. В админзоне будут вестить справочники контрагентов, счетов, счетов фактур, договоров и актов, а на фронт-зоне можно организовать личный кабинет клиента, где будут выводиться только его касающиеся документы, либо интранет справочник для отдела продаж и маркетинга. Также, на фронте будут выводиться данные в шаблонах, формируя тем самым документы для отправки по email, передаче через защищенные или обычные URL или для распечатки "твердых копий" на принтере. Подобное решение мы используем для работы с нашими партнерами и клиентами.
Примеры
Отрисовать НДС в конце счета можно с помощью связки:
В том числе НДС 18%: $Multiply[left: $Multiply[left: $Attribute:price$; right: $Attribute:quantity$; digits: 8]$; right: 0.15254237; digits: 2]$ $Text[source: "р."; antisource: " USD"; condition: USD !in $Attribute:price$, \$ !in $Attribute:price$]$
Результатом работы показанного блока в зависимости от валюты, указанной в поле $Attribute:price$, будет строка типа:
В том числе НДС 18%: 123.15р. или
В том числе НДС 18%: 123.15 USD
Цена ($Attribute:price$) умножена на количество товаров ($Attribute:quantity$) и результат округлен до 8 знаков после запятой. Если количество знаков не будет указано, число будет округлено до целых, а дробная часть потеряна. Округлять же более чем до 8 знаков в целях бухгалтерии бессмысленно. Далее, полученная сумма умножена на 0.15254237, для вычисления НДС в размере 18% (18/118) и произведено округление до 2 цифр после запятой, как требуется по правилам российской бухгалтерии. После прописи пишем либо "р." (в смысле "рублей"), либо " USD", в зависимости от того, был ли в исходной цене замечен знак доллара или строка "USD".
Обратите внимание, что конструкция !in означает "левое выражение не входит в правое", и то что знак доллара квотирован (предварен обратным слэшем) чтобы макросы не трогали его во время обработки. Также, учтите, что если в $Attribute:price$ находится значение вида "132$", то после умножения макросом Multiply знак доллара будет уничтожен.