[РЕШЕНО] Кто сможет сделать онлайн-калькулятор и за какие деньги?

Аватар пользователя vitaboss vitaboss 4 апреля 2012 в 1:33

Нужен калькулятор расчета стоимости обработки квадратных метров материала, которая складывается из цены затраченного материала в м.кв. + стоимость работы в м.кв. Видов работ и материалов может быть несколько, к любому материалу может быть применена различная обработка. Материал имеет такие свойства, как вид (название), толщину и ширину, длина не ограничена в разумных пределах. Работа над материалом имеет только 1 свойство, поэтому имеет просто цену за 1 м.кв. в трех вариантах (эконом, стандарт, премиум), которую пользователь выбирает сам. Обработать материал без отходов невозможно, поэтому всегда присутствует полезная площадь и отход.

Расчет происходит следующим образом:выбираем вид материала (по названию), вводим размеры, - калькулятор согласно размерам определяет (проверка по обоим размерам) какой ширины взять материал, прибавляет к длине заказа 0.1м и считает м.кв. затраченного материала Х на цену за 1кв.м. выбранного материла пользователем) + (считаем м.кв. выбранной пользователем обработки материала Х на цену 1 м.кв.) После этого умножаем на количество таких изделий (по умолчании 1 шт). Пользователь может дополнительно заказать такие работы как, обрезка по периметру. Если да, то считаем периметр полезной площади и умножаем на цену 1 м/п. В одном заказе может быть несколько изделий различных размеров и на разных материалах, поэтому для удобства пользователя, должна быть кнопка "добавить изделие", если нет, то переходим к оформлению заказа.
Дополнительные условия: Цена за 1м.кв. обработки материалов зависят от объема заказа, т.е. у пользователя может быть несколько изделий различных размеров, на разных материала и по различной цене обработки, но от суммы квадратных метров уменьшается цена работы за 1 м.кв. Скидка применяется, если материалы подобны по виду (названию) и по цене обработки, нужны редактируемые условия расчета цены в админке.
Еще... нужна защита от конкурентов, т.к. они могут пользоваться расчетами своих заказов в режиме онлайн. Какие будут предложения? У меня мысль, как вариант, пользователь не должен видеть расчеты в браузере, поэтому получает их на e-mail, на один адрес не может быть выслано более 1-го расчета в день, либо блокировать самых активных, письмо так же дублируется менеджеру в офис. Зарегистрированные пользователи и админы (это будут офис-менеджеры) видят расчеты в режиме ввода информации для расчетов оффлайновых заказов. Но этот вариант мне не очень нравится.
Ну и напоследок, вся эта каша должна иметь админку с добавлением/редактированием всех значимых параметром.





Онлайн-калькулятор работает!!! Я получил то, что хотел. Исполнитель OldWarrior

0 Thanks

Комментарии

Аватар пользователя OldWarrior OldWarrior 4 апреля 2012 в 1:59

1. Изделия имеют прямоугольную форму? То есть - во всех расчётах оперируем только высотой/шириной?

2. База изделий/материлов/размеров - уже сформирована? Если да - то в каком виде (ноды, записи в БД и т.д.)?

3. Затея с блокированием расчётов от конкурентов кажется неудачной (да и ненужной, по большому счёту). Имхо, в любом виде создаст неудобства и для обычных пользователей. В результате будет проще позвонить.

4. Со скидками - как-то непонятно.

5. Думаю, от 200$ как самый минимум - при реализации в виде модуля (да по-другому тут и не сделаешь).

Аватар пользователя vitaboss vitaboss 4 апреля 2012 в 2:53
"OldWarrior" wrote:

1. Изделия имеют прямоугольную форму? То есть - во всех расчётах оперируем только высотой/шириной?
2. База изделий/материлов/размеров - уже сформирована? Если да - то в каком виде (ноды, записи в БД и т.д.)?
3. Затея с блокированием расчётов от конкурентов кажется неудачной (да и ненужной, по большому счёту). Имхо, в любом виде создаст неудобства и для обычных пользователей. В результате будет проще позвонить.
4. Со скидками - как-то непонятно.

1. Изделия - только прямоугольники (ширина/длина)

2. База изделий это всего 3-4 вида материала (должно быть выпадающее меню) в калькуляторе.
Размеры материалов - стандартные ширины например 1,067м, 1,22м, 1.52, 3м. (длиной, как я написал, мы не ограничены в разумных пределах, материал рулонный, 50м. намотка). Есть нюанс, в различных партиях поставки, ширины материалов иногда отличаются, поэтому наверно надо как-то ее изменять. Калькулятор должен сам определять какой ширины рулон выгоднее брать, и еще забыл написать, нельзя на материале 1,067 получить заказ к примеру 1,06х1,06 т.к. есть минимальный технологический отступ, поэтому переходим на следующий размер рулона. Цена материла за 1м.кв. одинакова по виду и не зависит от ширины. Т.е. при расчете заказа материал считается (ширина подходящего по размеру материала х (длину заказа + 10см)). Технологический отступ должен быть по периметру всего заказа. База названий, ширин и цен материалов должна забиваться в админке калькулятора.

3. Думаем...

4. Попытаюсь объяснить на примере. Скидка для заказчика, как и везде, предоставляется от объема заказа. В нашем случае цена имеет несколько порогов, т.е. до 6м.кв одна цена, от 6 до 12 вторая цена, от 12 до 20 третья цена, от 20м.кв. четвертая. Если заказ 1 Х 1м. Х 21шт. = 21м.кв. применяем цену, которая идет от 20 м.кв. Но как быть если у заказчика например 5 изделий различных размеров, на одном материале по виду и он выбрал качество обработки "премиум", пускай даже с разными ширинами рулонов и заказ его в сумме намного больше чем 20 м.кв., а по отдельности каждый расчет не дотягивает до первого порога скидки. Получается, что его 5 расчетов нужно сплюсовать между собой и определить по какой цене считать обработку материала. Цена материала остается неизменной в независимости от объема.

Аватар пользователя OldWarrior OldWarrior 4 апреля 2012 в 4:46
"vitaboss" wrote:

Есть нюанс, в различных партиях поставки, ширины материалов иногда отличаются, поэтому наверно надо как-то ее изменять

Тут уже сложнее и как-то непонятно. Вот как вам это видится?
С типовыми размерами было бы всё ясно, размеры есть - вбил, проставил маркировку и все дела. А что делать, если на складе останется часть одной ширины, а ширина нового поступления будет отличаться? Городить новые позиции? Менять типоразмеры старых?

А вообще - что делаете? Раскройте уж тайну :-)
Что-то натяжное (потолки, холсты для картин, etc...)?

Аватар пользователя vitaboss vitaboss 4 апреля 2012 в 12:58
"OldWarrior" wrote:

Тут уже сложнее и как-то непонятно. Вот как вам это видится?
С типовыми размерами было бы всё ясно, размеры есть - вбил, проставил маркировку и все дела. А что делать, если на складе останется часть одной ширины, а ширина нового поступления будет отличаться? Городить новые позиции? Менять типоразмеры старых?
А вообще - что делаете? Раскройте уж тайну :-)
Что-то натяжное (потолки, холсты для картин, etc...)?

Ширина рулона зависит от производителя материала. А поставщики не всегда пунктуальны. На самом деле все типовые размеры имеются, только переход от одного "метрового" к другому "метровому" редко бывает. Реально так и происходит, что постоянно завозим например 1.05 (условно "метровый"), проходит пол-года, поставщик подорожал, перешли на другого, у него размер 1.02, в этом году появился 1,067 и он же может со временем стать 1,05. Может быть в админке калькулятора нужно сделать редактируемое поле ширина материала, а мы сами отрегулируем нужную ширину, ну на крайний случай редактировать прямо в коде.

Чем занимаемся, вы в принципе угадали, и потолки присутствуют и холсты, но это не важно.

Аватар пользователя AndreyWeb AndreyWeb 4 апреля 2012 в 15:59

На емайл отправлять не удобно - сравнивать сложно. В браузере тоже можно не считать :)
А так, сделать, конечно, можно. Ибо уже наделано разных всяких калькуляторов ого-го.
Деньги - ну пока берем российски рублями :)
Все зависит от графического оформления, сам алгоритм более-менее понятен.
Можем обсудить детали почтой или скайпом.

Аватар пользователя OldWarrior OldWarrior 4 апреля 2012 в 21:37
"vitaboss" wrote:

Может быть в админке калькулятора нужно сделать редактируемое поле ширина материала, а мы сами отрегулируем нужную ширину, ну на крайний случай редактировать прямо в коде.

Ну это и подразумевалось. Разумеется, всё через админку модуля.

Тогда мне просто непонятно, почему вы заострили на этом внимание как на "нюансе". Ну просто менять размер рулона, да и всё. Какие тут сложности?

И ещё: судя по всему, размеры для расчёта пользователь вводит в миллиметрах?

Аватар пользователя vitaboss vitaboss 4 апреля 2012 в 23:08

В принципе да, сложностей нет. Внимание заострил потому что заказчики хотят например 102см, на материале 1.067м получится, а вот на 1.05 уже критично, может не получиться, например при длине в 5м. точно не получиться. Вообще в эти мелочи можно не вдаваться, брать из набора следующий размер, пускай платят за отход.
Размеры для расчета, по опыту, заказчики предоставляют как в мм и см, так и в м. Чаще в метрах.
Или так: "посчитайте, сколько будет стоить два с половиной на восемьдесят", это означает 2,5х0,8(м). Бывают и такие 1382х1467, менеджеры в ужосе! Это грубо говоря 1,4х1,5 так как по технологии есть погрешность, а по цене нет особой разницы.

Аватар пользователя OldWarrior OldWarrior 5 апреля 2012 в 0:04

Хорошо, давайте по-другому: в каких единицах измерения требуются расчёты для калькулятора на сайте? Или тут будет выбор пользователем ещё и единиц?

Аватар пользователя AndreyWeb AndreyWeb 5 апреля 2012 в 0:25
"vitaboss" wrote:

В смысле? Как это?

Зачем считать в браузере, если в хотите алгоритм спрятать?

Аватар пользователя enemis enemis 5 апреля 2012 в 4:15
"AndreyWeb" wrote:

Зачем считать в браузере

Плохой путь выбираете если собираетесь делать расчет ajax'om, постоянные запросы на сервер это плохая практика, если у вас человек 100 зайдет поиграться с таким калькулятором виртуальный хостинг ляжет. А покупать мощный сервер иза калькулятора, клиент без штанов останется.

"AndreyWeb" wrote:

Если в хотите алгоритм спрятать?

А алгоритм расчета у вас, какой-то особенный? Зачем его прятать, или вы наивно полагаете что он кому-то нужен кроме заказчика?

Аватар пользователя OldWarrior OldWarrior 5 апреля 2012 в 6:49

Lol, what?

Ещё никто не говорит об Ajax'е, а уже сервер похоронили Ж-)
На самом деле в этом случае разницы почти никакой (в плане нагрузки). Разве что Ajax несколько замороченнее в реализации, чем обычный POST/GET.

И это вопрос ещё - наберётся ли у них хоть 20 одновременных посетителей. Да ещё чтоб каждый при этом захотел "поиграть" с калькулятором.

Ну и кроме того, есть jQuery (кстати, как наиболее вероятный механизм реализации) с подгрузкой всех вводных при первой загрузке страницы. Механизм (алгоритм) расчёта - да, доступен при этом всем, у кого есть желание лезть в JS-код. О чём, собственно и пытался сказать AndreyWeb (как я понял).

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

Аватар пользователя enemis enemis 5 апреля 2012 в 13:41
"OldWarrior" wrote:

Lol, what?
Ещё никто не говорит об Ajax'е, а уже сервер похоронили Ж-)

"AndreyWeb" wrote:

Зачем считать в браузере, если в хотите алгоритм спрятать?

"OldWarrior" wrote:

Механизм (алгоритм) расчёта - да, доступен при этом всем, у кого есть желание лезть в JS-код. О чём, собственно и пытался сказать AndreyWeb (как я понял).

Я так понял что собираются считать на серверной стороне те скрывать алгоритм. А это значит либо кнопка посчитать делает расчет формы, через обычный сабмит либо через ajax\ahah и тд. Так как использования обычного сабмита уже каменный век, то я делаю предположение об ajax в каком либо из его проявлений...

"OldWarrior" wrote:

И это вопрос ещё - наберётся ли у них хоть 20 одновременных посетителей.

Я считаю что нужно учитывать все возможные варианты в пределах разумного. И 100 уников на сайте играющихся с калькулятором это в принципе реально.

Аватар пользователя OldWarrior OldWarrior 5 апреля 2012 в 17:14
"enemis" wrote:

Я так понял что собираются считать на серверной стороне те скрывать алгоритм. А это значит либо кнопка посчитать делает расчет формы, через обычный сабмит либо через ajax\ahah и тд. Так как использования обычного сабмита уже каменный век, то я делаю предположение об ajax в каком либо из его проявлений...

Вроде пока ещё никак не собираются. Думают.

зы: Обычный сабмит ещё котируется. Вовсю. Но судя по тому, что:

"vitaboss" wrote:

Если да, то считаем периметр полезной площади и умножаем на цену 1 м/п. В одном заказе может быть несколько изделий различных размеров и на разных материалах, поэтому для удобства пользователя, должна быть кнопка "добавить изделие", если нет, то переходим к оформлению заказа.

то для расчётов вроде более логичен "чистый" jQuery - с расчётом на стороне клиента.

Кстати, тут опять вопрос заказчику: это калькулятор или таки форма оформления заказа? И вообще - результаты вычислений нужно передавать на сторону сервера?

Аватар пользователя enemis enemis 5 апреля 2012 в 17:23
"OldWarrior" wrote:

то для расчётов вроде более логичен "чистый" jQuery - с расчётом на стороне клиента.

Истинна.

"OldWarrior" wrote:

Кстати, тут опять вопрос заказчику: это калькулятор или таки форма оформления заказа? И вообще - результаты вычислений нужно передавать на сторону сервера?

Да если нужно создавать калькулятор оформляющий заказ. ТО это очень бААльшой геморрой. Делал подобное переписал все паны уберкарта + ордер модуль. Не на правах рекламы: адрес сайта

Аватар пользователя vitaboss vitaboss 6 апреля 2012 в 1:49
"OldWarrior" wrote:

Хорошо, давайте по-другому: в каких единицах измерения требуются расчёты для калькулятора на сайте? Или тут будет выбор пользователем ещё и единиц?

Считать будем только в м, т.к. по прайсу это привычнее. Кстати, забыл написать заказ менее 1м.кв. считается за 1м.
А вот ввод как лучше сделать не знаю. Подскажите, 1,5 = 1.5 для калькулятора? Не хочется писать "введите ширину в метрах, разделителем является запятая, а не точка". Может в см - будут только целые числа и без мм, т.к. миллиметры вообще не учитываются или если в метрах, то после запятой только 2 цифры.

Аватар пользователя OldWarrior OldWarrior 6 апреля 2012 в 2:39

Разделителем дробной части всегда была точка в компьютерных расчётах.

Я думаю так: если вы даёте размеры рулонов с точностью до миллиметра, значит единицей удобнее сделать миллиметры.
Или в тысячных долях метра. В конечном итоге всё равно как, лишь бы путаницы не было: "это меряется в метрах, а вот тут уже сантиметры".

Аватар пользователя vitaboss vitaboss 6 апреля 2012 в 2:51
"enemis" wrote:

Плохой путь выбираете если собираетесь делать расчет ajax'om, постоянные запросы на сервер это плохая практика, если у вас человек 100 зайдет поиграться с таким калькулятором виртуальный хостинг ляжет. А покупать мощный сервер иза калькулятора, клиент без штанов останется.

100 человек за сутки зайдет в 2024 году :) из них половина максимум захочет посчитать заказ. Клиенты только корпоративные, потому что бизнес специфический, не для населения а для предприятий. Сейчас планируется в основном использовать калькулятор для внутренних целей, т.е. чтобы наш менеджер и у себя в офисе, и в офисе у клиента, либо клиент самостоятельно мог посчитать заказ. Можно было бы написать что-то подобное в exele, но это по рукам разойдется и когда менеджер конкурента будет демпинговать и предлагать откат нашему клиенту, он с легкостью соорентируется в наших ценах.

"OldWarrior" wrote:

И это вопрос ещё - наберётся ли у них хоть 20 одновременных посетителей. Да ещё чтоб каждый при этом захотел "поиграть" с калькулятором.

20 в день наберется.

"enemis" wrote:

А алгоритм расчета у вас, какой-то особенный? Зачем его прятать, или вы наивно полагаете что он кому-то нужен кроме заказчика?

Конкурентам очень нужен! Алгоритм я сам придумал. Но в ручную считать долго. Когда начинали работать, считалось все огульно с завышенной ценой, сразу закладывались риски и отходы производства по максимуму, до сих пор многие так и считают, некоторые падают в цене и не учитывают отходы, происходит необоснованный демпинг. Пришли к тому, что нужна автоматизация.

"OldWarrior" wrote:

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

Они уже движутся в этом направлении, поэтому я хочу калькулятор, пока не поздно.

"enemis" wrote:

Я считаю что нужно учитывать все возможные варианты в пределах разумного. И 100 уников на сайте играющихся с калькулятором это в принципе реально.

НЕРЕАЛЬНО!!! Этот сервис для организаций и это не Москва.

"OldWarrior" wrote:

Кстати, тут опять вопрос заказчику: это калькулятор или таки форма оформления заказа? И вообще - результаты вычислений нужно передавать на сторону сервера?

Нужно. Хотелось бы сделать как в модуле webform, там все результаты записываются и высылаются на мыло, так вот, результаты калькулятора хотелось бы все таки наверно выдавать пользователю на мыло и дубликат нам, это получится типа коммерческого предложения, т.е. менеджер клиента делает расчеты, получает, распечатывает, несет своему директору на стол, мы знаем кто считал, что считал, ждем пару дней, если не звонят, звоним спрашиваем в чем проблема или трудности, ну лечим как обычно... или согласно расчетам выставляем счет на оплату. Где считать лучше на стороне клиента или на стороне сервера, я не знаю, это вам решать. Я нормально знаю друпал, но не знаю программирование, о клиент-серверных технологиях имею общее представление.

"enemis" wrote:

Да если нужно создавать калькулятор оформляющий заказ. ТО это очень бААльшой геморрой. Делал подобное переписал все паны уберкарта + ордер модуль. Не на правах рекламы: адрес сайта

Калькулятор оформляющий заказ как у вас, корзина, счет, адреса и реквизиты не нужено! Нужно проще. Выбрали материал, ввели размеры, выбрали обработку материала, вписали количество. Далее... пользователь выбирает либо добавить еще изделие, либо перейти к оформлению, т.е. к расчетам, т.е. к отправке на мыло. Если переходим к расчетам, то вводим телефон, имя, мыло. Рассчитать = отправить расчеты на мыло. Под админом или под зарегистрированным пользователем хотелось бы видеть расчеты в браузере, я так думаю в следующем окне. Как еще можно?

Аватар пользователя enemis enemis 6 апреля 2012 в 3:14

В принципе реализовать несложно, не буду предлагать цену тк как на данный момент занят :). Зашел по умничать по говорить :).

"vitaboss" wrote:

Не хочется писать "введите ширину в метрах, разделителем является запятая, а не точка". Может в см - будут только целые числа и без мм, т.к. миллиметры вообще не учитываются или если в метрах, то после запятой только 2 цифры.

это обычно не проблема вешается на события нажатия клавиши у поля примерно такой код и он не даст ввести не правильное значение. Пример на том же сайте:)

  var string=$('селектор указывающий на значение');
         value=parseFloat(string,10);
        if(isNaN(value)){
              $('селектор указывающий на значение').attr('value','1');
        }
        else{
           var rgxp = /(:?(?:^\d+$)|(?:^\d+\.\d{0,}$))/g;
            if (!rgxp.exec(string))
            $('селектор указывающий на значение).attr('value',value);
Аватар пользователя OldWarrior OldWarrior 7 апреля 2012 в 7:21
"vitaboss" wrote:

Далее... пользователь выбирает либо добавить еще изделие, либо перейти к оформлению, т.е. к расчетам, т.е. к отправке на мыло. Если переходим к расчетам, то вводим телефон, имя, мыло. Рассчитать = отправить расчеты на мыло. Под админом или под зарегистрированным пользователем хотелось бы видеть расчеты в браузере, я так думаю в следующем окне. Как еще можно?

Ну тогда скорее всего ajax тут не нужен, если можно "в следующем окне". Видимо, тогда так:

1. Подгружаем все доступные типоразмеры материалов в JS при загрузке калькулятора.

2. С помощью JS/jQuery формируем список изделий на расчёт.

3. Отправляем форму на расчёт на сторону сервера (обычным POST).

4. Все алгоритмы расчёта таким образом будут на стороне сервера, рассчитываем заказ.

5. Отображаем пользователю результат и отправляем почту пользователю и менеджеру.

Так?

И тогда ещё вопросы:

1. Результаты вычислений нужно сохранять в БД Друпала или они только уходят на почту?

2. Форма ввода имени/email/телефона - может быть на той же странице, где и форма ввода изделий?

3. Что там таки с единицами измерения?

Аватар пользователя vitaboss vitaboss 7 апреля 2012 в 22:33
"OldWarrior" wrote:

5. Отображаем пользователю результат и отправляем почту пользователю и менеджеру.

Зарегистрированному и админу отображаем результат, а незарегистрированному предлагаем получить расчеты на мыло, т.е. форма: имя, мыло, контактный тел.

"OldWarrior" wrote:

Результаты вычислений нужно сохранять в БД Друпала или они только уходят на почту?

И в базу и на почту.

"OldWarrior" wrote:

Форма ввода имени/email/телефона - может быть на той же странице, где и форма ввода изделий?

Не совсем понятно на какой странице.
Страница ввода размеров, выбор материала - страница вводных параметров, на ней кнопки: "добавить еще изделие" и "рассчитать". Вот на следующей странице если нажимаем "рассчитать", для юзеров выводим результаты и форму имени/email/телефона, для анонимов только форму. Запись в базу только если отправляется расчет на мыло.

"OldWarrior" wrote:

Что там таки с единицами измерения?

Хз. Всегда все размеры переводили и считали в м. Цена тоже формируется за 1м.кв. Как быть с калькулятором не знаю. Стоит ли переходить на см, т.е. ввод данных в см, а на выходе м.кв. х цену? Просто мне кажется, что с сантиметрами будет проще, т.к. будут вводиться целые числа. Может это только мне так кажется. С уверенностью могу только сказать, что итогом расчетов должны быть м.кв. Как считаете проще так и будем делать.

Аватар пользователя OldWarrior OldWarrior 8 апреля 2012 в 16:38
"vitaboss" wrote:

И в базу и на почту.

"vitaboss" wrote:

Запись в базу только если отправляется расчет на мыло.

Ну вот опять как-то не совсем понятно. Поясните.
Т.е. после расчёта - пользователь может отказаться от отправки результатов на e-mail? И если он отказывается - запись в базу не производится, так? Я что-то не пойму.

"vitaboss" wrote:

Не совсем понятно на какой странице.
Страница ввода размеров, выбор материала - страница вводных параметров, на ней кнопки: "добавить еще изделие" и "рассчитать". Вот на следующей странице если нажимаем "рассчитать", для юзеров выводим результаты и форму имени/email/телефона, для анонимов только форму.

Имелось в виду - на той же странице, где и калькулятор.
Например, где-нибудь внизу, над кнопкой "Рассчитать".
Можно сделать чекбокс, что-то вроде "Отправить результаты на почту".
Это вариант просто несколько проще в реализации, чем двухшаговый (т.е. форма калькулятора - на первом шаге, на втором - форма отправки).

Аватар пользователя vitaboss vitaboss 11 апреля 2012 в 15:04
"OldWarrior" wrote:

Ну вот опять как-то не совсем понятно. Поясните.
Т.е. после расчёта - пользователь может отказаться от отправки результатов на e-mail? И если он отказывается - запись в базу не производится, так? Я что-то не пойму.

Пользователь вводит размеры, добавляет изделия нажимая на кнопку "добавить", вводит новые размеры и т.д.
Затем у него закончились изделия и он хочет рассчитать. Нажимает кнопку "рассчитать" или получить расчеты. Переходит на страницу формы ввода email/имя/тел. и отправляет. Такие действия должны применяться для обычных посетителей. Если пользователь админ или зарегистрирован, то на этой странице с формой выводятся результаты расчетов и форма. У зарегистрированного пользователя должна быть возможность отправки расчетов на мыло. Если отправляется на мыло, сохраняется в бд.
Т.е. после расчета пользователь может отказаться от отправки результатов на мыло, но он тогда и не видит результатов и соответственно запись в базу не производится.