Cоздать плагин нестандартного расчета складских остатков (WP+WooCom)

30 000 руб. за проект • наличный расчёт, безналичный расчёт
26 марта 2019, 16:45 • 4 отклика • 29 просмотров
Нестандартность расчета складских остатков вызвана тем, что каждые сутки у нас есть некое кол-во 2-х ингредиентов (жиры и белки), из которых состоят некоторые товары (молоко, сметана и т.д.), необходимо отслеживать, сколько израсходовано жиров и белков в рамках суток и сколько ингредиентов доступно к заказу – суть в том, что товар – это столько-то жиров и столько-то белков.
Весь созданный функционал должен быть реализован так, чтобы при обновлении ядра WordPress, основной темы, плагинов и т.д. его работа не нарушалась.

Фронтэнд
При входе на сайт клиенту сразу же выводится всплывающая форма с формулировкой вида мы производим только самые свежие продукты и четко соблюдаем 24-часовой срок реализации, поэтому с просьбой выбрать район доставки. Алгоритм проверяет график доставки и предлагает ему возможные даты (см. бэкэнд).
Клиент, выбрав район и дату доставки, начинает отбирать товары. Пока район и дата не выбраны дальнейший просмотр сайта не возможен.
Выбранные район и дата доставки должна отображаться на странице оформления заказа и указываться в письмах, отправляемых клиенту и менеджеру магазина.

В момент нажатия В корзину – добавляем в корзину с предварительной проверкой возможности отгрузки такого количества в эту дату. В случае невозможности алгоритм не позволяет добавить товар в корзину и предлагает уменьшить количество, либо изменить дату доставки (предлагает следующую по графику развозки для этого района).
При определении возможности продать данное количество товара в данную дату производим раздельный расчет для скоропортящихся товаров и для товаров длительного хранения.
Для скоропорта – без учета складских остатков смотрим как у нас раскладывается нормативное молоко дня, предшествующего отгрузке, по жирам и белкам и при резерве товара (нажатии кнопку добавить) – резервируем необходимое количество жира и белка из свободного количества на срок, достаточный для оформления заказа (20 мин). По истечении срока весь резерв аннулируется и появляется надпись начните заново.
Для товаров длительного хранения (сыры и масло) остаток, подлежащий продаже, выводим из текущих классических складских остатков: есть на складе можем продать в пределах этого количества, нет не можем. Производственный план при этом не учитывается.
Для скоропорта проверку достаточно ли нам ингредиентов производим на дату, предшествующую дате доставки. Если человек делает заказ с доставкой, к примеру, на 25.03.2019, то ингредиенты списываются с количества, указанного на 24.03.2019 (вне зависимости от даты, когда человек делает заказ, – производство товаров будет происходить накануне).
На момент резерва (20 мин) для оформления заказа блокируем возможность другим покупателям распоряжаться зарезервированным количеством ингредиентов (списать их повторно).
После успешной оплаты (статус заказа меняется на В обработке) – списываем купленное количество ингредиентов окончательно.
Если оплата не произошла в течение 20 мин – снимаем бронь с этих ингредиентов.
Фактически ингредиенты сначала переводим из вакантного состояния в резерв, а затем из резерва в списание.

Бэкэнд
Объем перерабатываемого молока (кг.) и содержание в нем жира и белка (%%) то есть, количество ингредиентов, а равно и время резерва (20 мин) должно подлежать простой и доступной корректировке. При этом необходимо сохранять историю значения. Если мы меняем с завтрашнего дня объем молока с 2 тонн на 2,5 тонны, данные вчерашнего дня не должны измениться.

В админке сайта должен появится плагин, в котором создана таблица со следующими столбцами (в эту таблицу будет вносится информация о доступном количестве ингредиентов на каждый день):
(A) [дата]
(B) [масса сырого молока]
(C) [потери %]
(D) [жирность %]
(E) [белок %]
[масса жира] – закрыто от редактирования, рассчитывается по формуле D/100*(B*(1-C/100))
[масса белка] – закрыто от редактирования, рассчитывается по формуле E/100*(B*(1-C/100))
[жиров выкуплено] – закрыто от редактирования, отображается информация о количестве ингредиента, на которое уже есть заказы в этот день
[белков выкуплено] – закрыто от редактирования, отображается информация о количестве ингредиента, на которое уже есть заказы в этот день
В эту таблицу будут добавляться дни и вносится информация о количестве планируемого к производству молока – т.е. должна быть возможность внесения произвольного количества строк.

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

В карточке продукта должны появится 2 поля для внесения информации о жирности и белках (к примеру, Сметана – 18% жирность, 2,8% белков). Если у товара эти поля заполнены, то расчет их складских остатков идет по описанному выше алгоритму. Если товар не относится к молочке и эти поля не заполнены, то складские остатки ведутся и считаются по стандартным процессам WooCommerce.

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