forum.bitel.ru
http://forum.bitel.ru/

Счет: Кол-во, Цена, Сумма
http://forum.bitel.ru/viewtopic.php?f=14&t=1228
Страница 1 из 1

Автор:  Jimson [ 19 июн 2008, 17:45 ]
Заголовок сообщения:  Счет: Кол-во, Цена, Сумма

В соответсвии с базовым шаблоном счета и счета фактуры, столбцы Цена и Сумма будет всегда равны, и выставляются в шаблоне в format-number(@summ - $nds, '0.00')

При этом существует возможность указать значенние столбца Кол-во (quantity) для каждой позиции счета. Таким образом, если пользователь создаст позицию счета в которой quantity будет устанавливаться в значение отличное от единицы, документ станет не правильным, ибо в нем будем написанно:

Абон плата в кол-ве 5 штук по цене 20000 рублей на сумму 20000 рублей.

Поэтому предлагаю, в шаблоне выставлять цену в summ деленное на quantity, без относительно к тому что по сути эта цена есть фуфло и ни какого отношения в реальным тарифам не имеет. Зато документ будет правилен математически.

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


P.S. если можно напишите как и где в шаблоне можно определить переменную $quantity которая будет равна @quantity либо будет равна единице если @quantity не определена.

Автор:  Администратор [ 26 июн 2008, 15:53 ]
Заголовок сообщения: 

Предложенный вами вариант не походит, т.к. сумма не всегда пропопрциональна объему услуги.
Цитата:
P.S. если можно напишите как и где в шаблоне можно определить переменную $quantity которая будет равна @quantity либо будет равна единице если @quantity не определена.


Да вроде так и сделано..

Код:
<xsl:if test="@quantity">
                              <xsl:value-of select="@quantity"/>
                           </xsl:if>   
                           <xsl:if test="not(@quantity)">
                              1
                           </xsl:if>   

Автор:  Jimson [ 26 июн 2008, 16:36 ]
Заголовок сообщения: 

Администратор писал(а):
Предложенный вами вариант не походит, т.к. сумма не всегда пропопрциональна объему услуги.
Цитата:
P.S. если можно напишите как и где в шаблоне можно определить переменную $quantity которая будет равна @quantity либо будет равна единице если @quantity не определена.


Да вроде так и сделано..

Код:
<xsl:if test="@quantity">
                              <xsl:value-of select="@quantity"/>
                           </xsl:if>   
                           <xsl:if test="not(@quantity)">
                              1
                           </xsl:if>   


а вариант позиции:

Код:
N  Товар                              Цена    Кол-во   Сумма
1. Пачка пупсиков белого цвета        3000       50     3000


так устраивает ? ведь имеено так и будет в документе если я в конфиге выставлю quantity
по сутип шаблон расчитан ТОЛЬКО на quantity=1

там может пусть лучше поле цены в документе будет лажовым с точки зрения тарификации но при этом счет не будет отображать бреда в стиле 3000 * 50 = 3000 ?

Автор:  Администратор [ 27 июн 2008, 14:30 ]
Заголовок сообщения: 

У вас есть пример шаблона, вы можете делать в нем все, что захотите. На то и шаблон.

Автор:  Amir [ 27 июн 2008, 15:13 ]
Заголовок сообщения: 

т.е. в столбце где цена
вместо
Код:
 <xsl:value-of select="format-number(@summ - $nds, '0.00')"/>

Код:
<xsl:choose>
<xsl:when test="@quantity">
  <xsl:value-of select="format-number(((@summ - $nds) div @quantity), '0.00')"/>
</xsl:when><xsl:otherwise>
  <xsl:value-of select="format-number(@summ - $nds, '0.00')"/>
</xsl:otherwise>
</xsl:choose>

Автор:  snik [ 26 янв 2009, 21:27 ]
Заголовок сообщения: 

А как-то можно выудить цену из тарифного плана?

Автор:  Администратор [ 03 фев 2009, 01:14 ]
Заголовок сообщения: 

А как-то можно выудить цену из тарифного плана?
Ну можно, только очень муторно ) Путем ипользования расширения XSLT sql и последовательного выбора нужных данных из базы.

Автор:  Jimson [ 03 фев 2009, 02:47 ]
Заголовок сообщения: 

очень сомнительно что что то сложное можно реализовать через XSLT, застрянем где то точно на ограничениях xsl:variable
проще реализовать алгоритм в виде хранимой функции, даже притом что процедурный язык mysql даже отдально не напоминает plsql ) но тем не менее, а из xslt уже позвать функцию с кучей параметров и получить односложный ответ

вот только, snik, как вы определите какая "цена" по позиции "междугородная и международная телефонная связь" или скажем "цена" пропорциональной абон платы тариф по которой изменялся посредли месяца и договор был активен не полный месяц ? :)

Автор:  snik [ 03 фев 2009, 11:15 ]
Заголовок сообщения: 

Jimson писал(а):
очень сомнительно что что то сложное можно реализовать через XSLT, застрянем где то точно на ограничениях xsl:variable
проще реализовать алгоритм в виде хранимой функции, даже притом что процедурный язык mysql даже отдально не напоминает plsql ) но тем не менее, а из xslt уже позвать функцию с кучей параметров и получить односложный ответ

Полностью согласен
Jimson писал(а):
вот только, snik, как вы определите какая "цена" по позиции "междугородная и международная телефонная связь" или скажем "цена" пропорциональной абон платы тариф по которой изменялся посредли месяца и договор был активен не полный месяц ? :)

А как тогда считаются деньги? Я так понимаю по событию (звонок в телефонии или объём за сессию в ПД) из тарифа берётся соответсвующая цена и умножается на объем. Верно? Если да, то никто не мешает хранить эту цену в базе, а при необходимости изымать и вставлять в документы отчётности. Усложнения как я понимаю заключается в добавлении одного поля в базу и написании функции в модуле биллинга, что бы пользователь мог изымать цену.

PS: Вопорс есть по поводу подсчета трафика в ПД: Преобладабщий трафик это MAX(входящий,исходящий) за сессию или за переод отчетности NASа?

Автор:  dimOn [ 03 фев 2009, 14:42 ]
Заголовок сообщения: 

snik писал(а):
А как тогда считаются деньги? Я так понимаю по событию (звонок в телефонии или объём за сессию в ПД) из тарифа берётся соответсвующая цена и умножается на объем. Верно?
Неверно. "Цены за единицу" нет как таковой для сколько-нибудь сложного тарифа. Как вы её, собственно, представляете себе?

Автор:  snik [ 03 фев 2009, 16:34 ]
Заголовок сообщения: 

dimOn писал(а):
snik писал(а):
А как тогда считаются деньги? Я так понимаю по событию (звонок в телефонии или объём за сессию в ПД) из тарифа берётся соответсвующая цена и умножается на объем. Верно?
Неверно. "Цены за единицу" нет как таковой для сколько-нибудь сложного тарифа. Как вы её, собственно, представляете себе?

А как собственно говоря при отсутсвии цены происходит подсчет денег потраченных пользователем? Или "от фонаря"? При любом самом сложном тарифе 1 единица услуги стоит определенную сумму денег. Вот эту сумму и надо указать в цене.

Автор:  stark [ 03 фев 2009, 17:53 ]
Заголовок сообщения: 

snik писал(а):
Jimson писал(а):
очень сомнительно что что то сложное можно реализовать через XSLT, застрянем где то точно на ограничениях xsl:variable
проще реализовать алгоритм в виде хранимой функции, даже притом что процедурный язык mysql даже отдально не напоминает plsql ) но тем не менее, а из xslt уже позвать функцию с кучей параметров и получить односложный ответ

Полностью согласен
Jimson писал(а):
вот только, snik, как вы определите какая "цена" по позиции "междугородная и международная телефонная связь" или скажем "цена" пропорциональной абон платы тариф по которой изменялся посредли месяца и договор был активен не полный месяц ? :)

А как тогда считаются деньги? Я так понимаю по событию (звонок в телефонии или объём за сессию в ПД) из тарифа берётся соответсвующая цена и умножается на объем. Верно? Если да, то никто не мешает хранить эту цену в базе, а при необходимости изымать и вставлять в документы отчётности. Усложнения как я понимаю заключается в добавлении одного поля в базу и написании функции в модуле биллинга, что бы пользователь мог изымать цену.

PS: Вопорс есть по поводу подсчета трафика в ПД: Преобладабщий трафик это MAX(входящий,исходящий) за сессию или за переод отчетности NASа?



В случае телефонии и VoiceIP цена звонка есть в базе - log_session, там параметр cost - для телефонии и session_cost - для VoiceIP ..Звонок является неделимым, т.е если увас 300 минут по одной цене и когда было 295, у вас произошёл звонок на 10 минут, то все 305 минут будут по этой цене, а следующий звонок уже по другой ..В случае dialup нет понятия цены сессии .. половина сессии может быть по одной цене, а вторая по другой, потому как эта сессия перешла из одного узла тарифа в другой .

Автор:  snik [ 03 фев 2009, 21:16 ]
Заголовок сообщения: 

stark писал(а):
snik писал(а):
Jimson писал(а):
очень сомнительно что что то сложное можно реализовать через XSLT, застрянем где то точно на ограничениях xsl:variable
проще реализовать алгоритм в виде хранимой функции, даже притом что процедурный язык mysql даже отдально не напоминает plsql ) но тем не менее, а из xslt уже позвать функцию с кучей параметров и получить односложный ответ

Полностью согласен
Jimson писал(а):
вот только, snik, как вы определите какая "цена" по позиции "междугородная и международная телефонная связь" или скажем "цена" пропорциональной абон платы тариф по которой изменялся посредли месяца и договор был активен не полный месяц ? :)

А как тогда считаются деньги? Я так понимаю по событию (звонок в телефонии или объём за сессию в ПД) из тарифа берётся соответсвующая цена и умножается на объем. Верно? Если да, то никто не мешает хранить эту цену в базе, а при необходимости изымать и вставлять в документы отчётности. Усложнения как я понимаю заключается в добавлении одного поля в базу и написании функции в модуле биллинга, что бы пользователь мог изымать цену.

PS: Вопорс есть по поводу подсчета трафика в ПД: Преобладабщий трафик это MAX(входящий,исходящий) за сессию или за переод отчетности NASа?



В случае телефонии и VoiceIP цена звонка есть в базе - log_session, там параметр cost - для телефонии и session_cost - для VoiceIP ..Звонок является неделимым, т.е если увас 300 минут по одной цене и когда было 295, у вас произошёл звонок на 10 минут, то все 305 минут будут по этой цене, а следующий звонок уже по другой ..В случае dialup нет понятия цены сессии .. половина сессии может быть по одной цене, а вторая по другой, потому как эта сессия перешла из одного узла тарифа в другой .

Тогда по шагам попробуйте объяснить: КАК СНИМАЮТСЯ ДЕНЬГИ В DialUp?
Если сесия попала на 2 тарифа то цена 1 байта у каждой части все равно есть. Не важно по времени переход или по объёму. Цена все равно есть! Иначе со счета деньги не снимутся.

Автор:  dimOn [ 04 фев 2009, 12:51 ]
Заголовок сообщения: 

snik писал(а):
Если сесия попала на 2 тарифа то цена 1 байта у каждой части все равно есть. Не важно по времени переход или по объёму. Цена все равно есть! Иначе со счета деньги не снимутся.
Цена при определённом уровне детализации есть на всё. И что же, Вы хотите в печатной форме своей выводить что-то такое?
Код:
Услуга                       Кол-во   Цена                   Сумма
Звонки до 300минут      305       2                        610
Звонки свыше 300мин    10        1                        10
Звонки ночью
Звонки днём
.....
Интернет дневной          58        15                       ...
Интернет вечерний         65        18                      ....
Интернет ночной            40        10                      400
Интернет траффик
Интернет локальный
....

Автор:  snik [ 04 фев 2009, 14:59 ]
Заголовок сообщения: 

dimOn писал(а):
snik писал(а):
Если сесия попала на 2 тарифа то цена 1 байта у каждой части все равно есть. Не важно по времени переход или по объёму. Цена все равно есть! Иначе со счета деньги не снимутся.
Цена при определённом уровне детализации есть на всё. И что же, Вы хотите в печатной форме своей выводить что-то такое?
Код:
Услуга                       Кол-во   Цена                   Сумма
Звонки до 300минут      305       2                        610
Звонки свыше 300мин    10        1                        10
Звонки ночью
Звонки днём
.....
Интернет дневной          58        15                       ...
Интернет вечерний         65        18                      ....
Интернет ночной            40        10                      400
Интернет траффик
Интернет локальный
....

Да. Примерно это и нужно. Но мне нужна цена из тарифного плана. Расхождение цены в договоре и в счете не все понимают.

Автор:  snik [ 06 апр 2009, 18:45 ]
Заголовок сообщения: 

В 4.6 вопрос решился?

Автор:  Jimson [ 06 апр 2009, 22:22 ]
Заголовок сообщения: 

если вам для IPN то оно уже реализуемо, через TRAFF_DETAIL, в соответсвующих таблицах есть как сумма так и объем, цены вычислите делением при условии что в пределах категории трафика цена не меняется внутри одного тарифа в зависимости от периода или еще чего то

P.S. рядом тема про то же самое...

Автор:  snik [ 07 апр 2009, 12:24 ]
Заголовок сообщения: 

Нет. Меня интерисуе DialUP. При этом тариф не обязательно линейный (простое деление не поможет).
Например:
1. Объём до 1 гб стоит:
С 00:00 до 08:00 40 коп. за 1 мб
С 08:01 до 18:00 80 коп. за 1 мб
С 18:01 до 23:59 60 коп. за 1 мб
2. Объём от 1 гб до 5 Гб стоит:
С 00:00 до 08:00 35 коп. за 1 мб
С 08:01 до 18:00 70 коп. за 1 мб
С 18:01 до 23:59 60 коп. за 1 мб
3. Объём свыше 5 гб стоит:
С 00:00 до 08:00 30 коп. за 1 мб
С 08:01 до 18:00 60 коп. за 1 мб
С 18:01 до 23:59 50 коп. за 1 мб

И как такой тариф в Счет-фактуре расписать? Клиент требует что бы ему показали сколько он скачал и по какой цене.

Автор:  Администратор [ 07 апр 2009, 12:41 ]
Заголовок сообщения: 

В DialUp все аналогично. При любом делении можно прямо в узле "Стоимость" можно указывать определенный в конфигурации tariff.detail . Потом сделать полный переобсчет по клиентам за месяц и можно макросами в бухгалтерии вытаскивать TARIFF_DETAIL

Автор:  snik [ 07 апр 2009, 13:03 ]
Заголовок сообщения: 

А каким образом это сделать? Детализацию по объёму понятно. Детализация по сумме то же не проблема. А вот когда происходит деление вылезают копейки. Которые бухгалтерия не принимает.

ЗЫ: Вопрос не совсем в тему хотя касается бухгалтерского модуля. При формировани счетов и с-ф был макрос mm, а вот макроса yy не было. Обещали в 4.6 добавить. Сделали?

Автор:  Администратор [ 07 апр 2009, 13:14 ]
Заголовок сообщения: 

Цитата:
А каким образом это сделать? Детализацию по объёму понятно. Детализация по сумме то же не проблема. А вот когда происходит деление вылезают копейки. Которые бухгалтерия не принимает.

Да, с копейками там засада выйдет, может не сойтись наработка в договоре и сумма по позициям.
Цитата:
ЗЫ: Вопрос не совсем в тему хотя касается бухгалтерского модуля. При формировани счетов и с-ф был макрос mm, а вот макроса yy не было. Обещали в 4.6 добавить. Сделали?

В имени позиций? Нет, не делали, по-моему. Вы бы кинули ссылку на тему, где это обсуждалось.

Автор:  snik [ 07 апр 2009, 13:53 ]
Заголовок сообщения: 

Администратор писал(а):
Цитата:
А каким образом это сделать? Детализацию по объёму понятно. Детализация по сумме то же не проблема. А вот когда происходит деление вылезают копейки. Которые бухгалтерия не принимает.

Да, с копейками там засада выйдет, может не сойтись наработка в договоре и сумма по позициям.


Она самая и есть. Вот и жду когда добавите функцию

Администратор писал(а):
Цитата:
ЗЫ: Вопрос не совсем в тему хотя касается бухгалтерского модуля. При формировани счетов и с-ф был макрос mm, а вот макроса yy не было. Обещали в 4.6 добавить. Сделали?

В имени позиций? Нет, не делали, по-моему. Вы бы кинули ссылку на тему, где это обсуждалось.

Мы с Amir ом по телефону общались. Он обещал добавить.

Автор:  Администратор [ 07 апр 2009, 14:44 ]
Заголовок сообщения: 

Цитата:
Она самая и есть. Вот и жду когда добавите функцию

Какую функцию-то? Если там реально наработка по копейкам не делится на типы эти..
Цитата:
Мы с Amir ом по телефону общались. Он обещал добавить.

Вы точно опишите, что добавить-то надо? То, что я предположил?

Автор:  Jimson [ 07 апр 2009, 14:49 ]
Заголовок сообщения: 

что бы копейки сошлись надо одну из позиций считать как разность наработки и суммы всех остальных "тариф-детайлов"

Автор:  borisk [ 04 авг 2009, 16:02 ]
Заголовок сообщения: 

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

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/