Калькулятор-валидатор кол-ва товара OpenCart
В магазине "Дилерок" на CMS OpenCart была возможность указывать кол-во товара при покупке только в единицах целочисельных значений. У товаров магазина есть варианты количественного измерения товаров не только в целочисельных единицах но и в метрах квадратных. Например продается у них плитка в упаковке которой 4 шт а общий метраж этих 4-х плиток упаковки 1.44 м2. Плитка эта продается не только целыми упаковками и и поштучно. До моей доработки покупатель мог ввести в кол-во заказа только целочисельное значение. Поэтому когда приходил заказ с такой плиткой с кол-вом, например 1 то менеджер не мог сразу понять какое значение подразумевал покупатель, штуки или метры квадратные. Решили что нужно сделать этот момент максимально удобным для покупателя и прозрачным для менеджера магазина. Я сделал на javascript набор функций которые делают следующее:
1) Функция инициализации при загрузке страницы проходит по всем товарам на странице (страница категории списка товаров, карточка товара с релевантными товарами, страница поисковой выдачи фильтра и поля поиска товаров) и определяет единицу измерения товара (штуки, метры квадратные или комплекты). Если товар продается в метрах квадратных то поле ввода кол-ва определяется как поле для ввода кол-ва в метрах квадратных и под них создается дополнительное поле для ввода кол-ва в штуках http://prntscr.com/fr2g3c Если товар продается в штуках или комплектах то поле определяется исключительно для ввода целочисельных значений https://prnt.sc/fr2gxh
2) У товаров которые измеряются метрами квадратными образуется два связанных между собой поля ввода кол-ва: в метрах квадратных и штуках. Так как товар такой продается поштучно ( например плитка) а измеряется в метрах квадратных то оба поля я сделал как калькуляторы и валидаторы корректных значений относительно следующих условий. В вышеприведенном примере пачки плитки с кол-вом 4 штуки и метражем пачки из этих 4-х штук метраж составляет 1.44 м2. Получается что метраж 1 плитки 0,36 м2. Поэтому функция инициализации после определения поля ввода его кол-ва как м2 и создания для этого товара дополнительного поля ввода кол-ва в штуках сразу прописывает минимальное кол-во заказа этой плитки в м2 http://prntscr.com/fr2jvi
а) Если покупатель вводит 2 штуки в поле шт то ему сразу отображается метраж 2 штук этой плитки http://prntscr.com/fr2kd2
б) Если покупатель заказывает плитку в кол-ве под нужный ему метраж то калькулятор-валидатор учитывает что плитка продается поштучно и округляет значение введенных квадратных метров в большую сторону до получения целочисельного результата кол-ва в штуках. Например покупателю нужно такой плитки 11 м2. При вводе 11 м2 в поле кол-ва квадратных метров калькулятор-валидатор подставляет ближайшее кратное штукам этой плитки значение метров квадратных для этого метража http://prntscr.com/fr2lrh Округление в большую сторону учитывает специфику строительных работ при которой "лучше излишек материала чем его недостача".
JavaScriptOpencart