Your comments

156 сборка. Также округление в большую сторону

Если ввести стоимость подачи в размере 15 р/км, то она отразиться тут:

Деревня -> город = 30*10=300 р. (пробег 10 пустой +10 с клиентом =20 км) 150+30*10=450

и тут:

Деревня -> город -> деревня = 30*20=600 р. (пробег 10 пустой +10 с клиентом +10 с клиентом +10 пустой =40 км) 150+30*20=750

Все равно идут не стыковки.

А как быть с заказами когда клиент едет из деревни "А" в деревню "Б" без заезда в город? Или когда клиент едет из города в деревню и потом обратно в город, а то и того хуже - из деревни в город и обратно в деревню?

Вариант с двойным тарифом я рассматривал в первую очередь. Допустим цена за городом 30 р/км и деревня в 10 км. от границы города. Рассматриваем вариант что клиент едет от самой границы города (что бы исключить влияние городской цены).


с таким маршрутом все хорошо выходит:

Город -> деревня = 30*10=300 р. (пробег 10 с клиентом +10 пустой =20 км)

Деревня -> город = 30*10=300 р. (пробег 10 пустой +10 с клиентом =20 км)


а вот с таким получаются не стыковки по сумме и пробегу

Город ->деревня -> город = 30*20=600 р. (пробег 10 с клиентом +10 с клиентом =20 км)

Деревня -> город -> деревня = 30*20=600 р. (пробег 10 пустой +10 с клиентом +10 с клиентом +10 пустой =40 км)


Это ж сколько мне геозон надо нарисовать? Точно не скажу сейчас, на вскидку около 50-60 деревень надо нарисовать

Если система видит что машина пересекла границу города, то начинает прибавлять к загородному тарифу еще и стоимость возврата до границ города. Т.е если загородный тариф 10 р/км, и возврат 10 р/км, то на таксометре каждый километр будет прибавляться по 20 рублей, при этом такое понятие как стоимость подачи машины за город отпадает. Таксометр при включении в этой деревне сразу посчитает возврат до города. Такой подход поможет решить сразу комплекс задач. Например вызов машины в какую то деревню и поездка клиента в магазин в этой же деревне (мы же должны посчитать стоимость подачи машины и возврата ее обратно в город), или поездка клиента из одной деревни в другую без заезда в город. Если машина забирает клиента из деревни и едет с ним в город, то стоимость на таксометре до границ города менятся не будет (при условии равенства стоимости возврата и стоимости пробега с клиентом). Так же при поездке клиента из города в деревню будет постоянно суммироваться стоимость километра и стоимость возврата.


Написал сумбурно, но надеюсь понятно ;)

Как вариант можно сделать такой алгоритм: По нажатию кнопки "Заезд" для фирм работающих чисто по таксометру добавляется Х рублей, а для фирм работающих по карте - передаем координаты точки в которой была нажата кнопка и на сервере подтягиваем ближайший адрес и пересчитываем стоимость

Может мы говорим об одном и том же. Я предлагаю НЕ РЕДАКТИРОВАТЬ цену водителем, а просто нажимать кнопку "Заезд", а уж стоимость заезда директор устанавливает самостоятельно в программе. При этом ОБЯЗАТЕЛЬНО надо на треке отмечать точку, в которой была нажата кнопка

Если клиент пожаловался на завышенную цену, то просто поднимаем трек поездки и смотрим маршрут. Видим начальную точку и конечную, определяем маршрут из точки А в точку В, если было отклонение от этого маршрута, то водитель корректно нажал кнопку "Заезд", если нет, то имеем разбор полетов с водителем со всеми вытекающими последствиями.

Пару-тройку показательных казней провести - другим неповадно будет ;)

Думаю что водителю будет крайне неудобно набирать адрес с телефона, а звонить оператору и корректировать маршрут - вообще не целесообразно

Андрей, ну хотя бы один то раз все равно позвонит, т.к водитель дал команду на дозвон ;)