В чем различие между ценой билета и его стоимостью: цена билета это сумма, которую клиент обязан внести в кассу для покупки этого билета вне зависимости от типа оплаты. Стоимость билета определяется тем, какой валютой клиент оплачивает покупку. А точнее выставлена ли у этой валюты опция «Включить в стоимость билета». Если эта опция включена, то эта валюта будет участвовать в ценообразовании, если нет, то не будет. Тоже самое относится и к наценке.
Обычно не участвуют в ценообразовании валюты с виртуальными деньгами, например бонусные карты.
Чтобы понять, как это все рассчитывается, приведем пример. Мы покупаем 5-ть билетов по 90 руб., наценка составит 10%. При этом наличными оплачиваем 320 руб., кредитной картой – 120 руб., а бонусами - 154 руб. (см. Таблица 1 и Таблица 2). У валюты «Бонусные карты» опция «Включить в стоимость билета» не выставлена, поэтому она в ценообразовании не участвует. Пока еще мы ничего не рассчитывали, поэтому в таблице 1 ячейки пустые.
Таблица 1
Наличные | Кредитная карта | Бонусы | Цена | |
Билет №1 | 90,00 | |||
Наценка к билету №1 | 9,00 | |||
Билет №2 | 90,00 | |||
Наценка к билету №2 | 9,00 | |||
Билет №3 | 90,00 | |||
Наценка к билету №3 | 9,00 | |||
Билет №4 | 90,00 | |||
Наценка к билету №4 | 9,00 | |||
Билет №5 | 90,00 | |||
Наценка к билету №5 | 9,00 | |||
Билет №6 | 90,00 | |||
Наценка к билету №6 | 9,00 | |||
Σ | 320,00 | 120,00 | 154,00 | 594,00 |
Таблица 2
Валюта | Внесено (Currency_Sum(n)) |
Часть суммы, которая приходится на билеты (Currency_Ticket_Sum(n)) |
Часть суммы, которая приходится на наценку (Currency_Comission_Sum(n)) |
Наличные | 320,00 | 290,91 | 29,09 |
Кредитная карта | 120,00 | 109,09 | 10,91 |
Бонусные карты | 154,00 | 140,00 | 14,00 |
594,00 | 400,90 | 80,18 |
Таблица 3
Справочник обозначений:
Название переменной | Описание | Значение |
Total_Sum | Полная стоимость покупки | 594,00 |
Total_Tickets_Sum | Полная стоимость билетов | 540,00 |
Total_Comissions_Sum | Полная стоимость комиссионных отчислений | 54,00 |
Ticket_Price(k) | Цена k-ого билета | 90,00 |
Ticket_Comission_Price(k) | Комиссионные отчисления для k-ого билета | 9,00 |
Currency_Sum(n) | Сумма внесённая в n-ой валюте | См. табл. 2 |
Currency_Ticket_Sum(n) | Сумма стоимости билетов в n-ой валюты | См. табл. 2 |
Currency_Comission_Sum(n) | Сумма стоимости комиссионных отчислений в n-ой валюты | См. табл. 2 |
Ticket_Sum(k, i) | Стоимость k-того билета в n-ой валюте | См. табл. 1 |
Основная сложность заключается в том, чтобы суммы по горизонтали (по билету) и по вертикали (по валютам) в таблице совпадали до копейки. С этой целью алгоритм расчета выглядит следующим образом.
Для всех N-1 валют (столбцов) применяется следующая методика расчета цен:
После таких операций мы получим результат, который представлен в Таблице 4:
Таблица 4
Наличные | Кредитная карта | Бонусы | Цена | |
Билет №1 | 48,48 | 18,19 | 90,00 | |
Наценка к билету №1 | 4,85 | 1,82 | 9,00 | |
Билет №2 | 48,48 | 18,19 | 90,00 | |
Наценка к билету №2 | 4,85 | 1,82 | 9,00 | |
Билет №3 | 48,48 | 18,19 | 90,00 | |
Наценка к билету №3 | 4,85 | 1,82 | 9,00 | |
Билет №4 | 48,48 | 18,19 | 90,00 | |
Наценка к билету №4 | 4,85 | 1,82 | 9,00 | |
Билет №5 | 48,48 | 18,19 | 90,00 | |
Наценка к билету №5 | 4,85 | 1,82 | 9,00 | |
Билет №6 | 48,51 | 18,14 | 90,00 | |
Наценка к билету №6 | 4,84 | 1,81 | 9,00 | |
Σ | 320,00 | 120,00 | 154,00 | 594,00 |
Теперь осталось рассчитать стоимости билетов и комиссионных отчислений для последнего столбца, то есть для валюты n=N. Кстати говоря, если у нас есть только одна валюта, то приведенные выше вычисления будут пропущены.
Данные для последнего столбца будут вычисляться не сверху вниз, а слева направо.
Результат всех этих расчетов представлен вТаблица 5. Так как в стоимость билета не входит часть, оплаченная бонусами, то цифры в столбце «Стоимость билета» будут меньше, чем в столбце «Цена билета».
Таблица 5
Наличные | Кредитная карта | Бонусы | Цена | Стоимость | Стоимость билета | |
Билет №1 | 48,48 | 18,19 | 23,33 | 90,00 | 66,67 | 73,34 |
Наценка к билету №1 | 4,85 | 1,82 | 2,33 | 9,00 | 6,67 | |
Билет №2 | 48,48 | 18,19 | 23,33 | 90,00 | 66,67 | 73,34 |
Наценка к билету №2 | 4,85 | 1,82 | 2,33 | 9,00 | 6,67 | |
Билет №3 | 48,48 | 18,19 | 23,33 | 90,00 | 66,67 | 73,34 |
Наценка к билету №3 | 4,85 | 1,82 | 2,33 | 9,00 | 6,67 | |
Билет №4 | 48,48 | 18,19 | 23,33 | 90,00 | 66,67 | 73,34 |
Наценка к билету №4 | 4,85 | 1,82 | 2,33 | 9,00 | 6,67 | |
Билет №5 | 48,48 | 18,19 | 23,33 | 90,00 | 66,67 | 73,34 |
Наценка к билету №5 | 4,85 | 1,82 | 2,33 | 9,00 | 6,67 | |
Билет №6 | 48,51 | 18,14 | 23,35 | 90,00 | 66,65 | 73,30 |
Наценка к билету №6 | 4,84 | 1,81 | 2,35 | 9,00 | 6,65 | |
Σ | 320,00 | 120,00 | 154,00 | 594,00 | 440,00 |
В таком виде цифры и попадают в базу данных.