Chat with us, powered by LiveChat

Quicksuite Knowledge Base Get Support 24/7

Grocery

Streamlined Grocery Management with Quicksuite

In the dynamic landscape of multi-service software solutions, our Grocery Module for the Admin Panel redefines the way grocery businesses operate. Seamlessly integrated into our comprehensive platform, this module empowers administrators to efficiently manage every facet of their grocery services. Let’s delve into the features and advantages that make our Grocery Module a game-changer.

Our Grocery Module is designed to scale alongside your business. Whether you’re managing a single grocery store or a network of locations, the module adapts to your needs, supporting your growth aspirations. Elevate your grocery business to new heights with this module. Experience the efficiency, control, and insights needed to stay competitive in the dynamic and ever-evolving grocery market.

In the Grocery Module, we have the first feature of Merchant Types

  • In the merchant types feature of the grocery module, the admin can see various details like the image and the name of the merchant type.
  • The admin can also see the created date and the serial number of merchant types, alongside which the status tab is present which represents whether the merchant is active or blocked from delivering groceries to the customers.
  • The admin can also edit or delete a particular merchant type using the action tab.
  • The admin can also drag and adjust the position of a merchant type using the button present on the right side of the action tab.

Categories Feature
Let’s proceed to the Categories Feature

  • In the categories feature, the admin will be able to see categories along with subcategories.
  • In the top right corner, you can see a search bar that helps the admin search for categories as well as subcategories in the existing list.
  • On clicking a specific category, the admin will be able to view the subcategories of that particular category. The admin can also edit or block a particular category.
  • Alongside the search bar, a bin icon is also present that will help the admin to delete a particular category or all categories at once. The admin can also import or export categories from a CSV file.
  • Just right by this import-export button, a choose button is also available that helps the admin to add a category or a subcategory. The admin will be required to mention the cuisine type, category name, and image to add a particular category.

Grocery Quicksuite

Now we move on to the Merchant Feature

On clicking on the Merchant feature, the admin can see the 2 main tabs Merchant and Pending Merchants. The pending Merchant tab lists those Merchants whose onboarding requests are pending approval.

  • Under the Merchant tab, all impaneled Merchants are listed with details like their name, image, rating, and others that are added at the time of Merchant registration to the panel.
  • The document status represents the approval status of the documents submitted by the Merchant.
  • The type section indicates the Merchant type.
  • The Merchant ID refers to a unique ID given to a specific Merchant.
  • The product tab represents the number of products offered by the Merchant. The admin can also add products on merchant request.
  • The status tab represents whether a Merchant is active or blocked from serving and the admin can control the same.
  • The created date tab refers to the date on which the Merchant was added to the panel.

The 3 dots sign is for the action by the admin to edit Merchant details that contain information related to Merchant name & location, delivery details, bank details, operating hours & holiday lot if any. Admin can also see outlets, delete any Merchant, and view ratings & reviews. All these come under the action tab.

Next to the 3 dots action icon is a redirection icon, Clicking on this takes the admin to the merchant panel. A search bar is present on the top right corner that helps the admin to search for a Merchant using its name, email, and Merchant ID. Alongside the search bar, a bin icon is present that allows the admin to delete a particular Merchant or all the Merchants at once.

The admin can also import or export Merchants in CSV file format. The filter button can help the admin filter the Merchants based on various criteria like reviews, maximum delivery time, minimum delivery time, item quality, and blocked Merchants.

To add a new Merchant, click on the Add Merchants button. In the next step, the admin will be required to add details like personal details of the Merchant, delivery options, bank details of the merchant, and operating hours of the Merchant. After you are done adding the details, click on the add button to submit the details.
A rainy mode button is present below the add Merchant button which helps the admin to switch the merchants off temporarily. This change will be reflected in the customer app.

Report Feature

Next, we move to the Report Feature

  • In the report feature, you can see a filter of date which can help you to find orders according to a particular date. Alongside the date filter, you can see an export button that can help the admin to export the report file in an Excel file format.
  • The date section tells you the particular date on which the order is placed. Order number refers to the serial number of the order placed.
  • The restaurant’s name denotes the name of the restaurant from which the order is placed.
  • Customer details such as their name and delivery address are also given.
  • The report feature also includes the name of the driver delivering the order.
  • Other order details such as the creation time of the order and the time at which the order is accepted are also given.
  • Collection Time refers to the time taken by the driver to pick up the order and Wait Duration is the amount of time for which the driver had to wait at the pickup location.

Pickup Time is the time at which the order is picked up by the driver whereas Delivery Duration denotes the time taken by the driver to deliver the order. The admin can also see the time at which the order is delivered. Total distance per trip shows the amount of distance traveled by the driver to deliver the order.Order amount denotes the total billed amount of the order.

View Demo

var requesturl = window.location.href; var urllink = encodeURIComponent(requesturl); function linkWithParamRow() { window.open('https://api.whatsapp.com/send?phone=+918288926964&text=Hello,%20%20Team%20Quick%20Works,%20%20'+urllink, '_blank'); } $(document).ready(function() { $('form').each(function() { // <- selects every
on page var FormID = $(this).attr('id'); var Formrole = $(this).attr('role'); var notgothere = $(this).attr('notgothere'); if(((FormID != 'videos_srch_frm') || Formrole != 'search') && (FormID != 'pass-protct') && (notgothere != 'notgothere')) { if(FormID != 'commentform') { $(this).submit(function(e) { e.preventDefault(); if (! $(this).valid()) { return false; } }).validate({ onkeyup: function(element) { $(element).valid(); }, rules: { fullname : { required: true, minlength: 3, maxlength: 30, alpha: true }, signup_first_name : { required: true, minlength: 3, alpha: true }, signup_last_name : { required: true, alpha: true }, signup_password : { required: true, minlength: 8, }, phonenumber : { required: true, digits: true, minlength: 6, maxlength: 15, mobileValidation: $(this).find(':input[name=phonenumber]').val() }, phone_number : { required: true, digits: true, minlength: 6, maxlength: 15, mobileValidation: $(this).find(':input[name=phone_number]').val() }, SelectBudget : 'required', ProjectRequirements : { required: true, minlength: 15, maxlength: 700 }, email: { required: true, email: true,//add an email rule that will ensure the value entered is valid email id. maxlength: 255, }, emailaddress: { required: true, email: true,//add an email rule that will ensure the value entered is valid email id. maxlength: 255, }, address_data : { required: true, locMethod: true }, }, highlight: function(input) { $(input).addClass('empty_value'); }, unhighlight: function (input) { $(input).removeClass('empty_value'); }, invalidHandler: function(form, validator) { var errors = validator.numberOfInvalids(); if (errors) { validator.errorList[0].element.focus(); } }, errorPlacement: function(error, element){ if (element.attr("name") == "emailaddress") { //error.insertAfter(element) var lastError = $(element).data('lastError'), newError = $(error).text(); $(element).data('lastError', newError); if (newError !== '') { $(element).tooltip('dispose').tooltip({title: newError}).tooltip('show'); } } else { error.insertAfter(element) } }, success: function (label, element) { $(element).tooltip('hide'); }, submitHandler: function(form) { var formID = form.id; if(formID == 'pln_sinp') { if ($('.modlClas').filter(':checked').length < 1) { return false; } } var formData = new FormData( this[0] ); var str = $(form).serializeArray(); var formData = new FormData(); $.each(str, function(i, val) { formData.append(val.name, val.value); }); $(form).find(':input[type=submit]').prop('disabled', true); var formID = form.id; if(formID == 'thank_you_subscription_form'){ var actionurl = 'https://quick-works.com/wp-content/themes/quickworks/subscription-ajax-form.php'; } else { if(form.form_name.value == 'Download EBook') { $(form).find(':input[type=submit]').val("downloading"); } else { $(form).find(':input[type=submit]').val("Submitting..."); } var full_number = form.full_number.value; if($(form).find(':input[name=phonenumber]').length>0){ var a = form.phonenumber.value; var code = $(form).find('.iti__selected-dial-code').text(); formData.append("country_code", code); if(full_number == '') { formData.append("full_number", code+a); } } else if($(form).find(':input[name=phone_number]').length>0){ var a = form.phone_number.value; var code = $(form).find('.iti__selected-dial-code').text(); formData.append("country_code", code); if(full_number == '') { formData.append("full_number", code+a); } } formData.append("form_id", formID); if(formID == 'pln_sinp') { var actionurl = 'https://quick-works.com/wp-content/themes/quickworks/custom-signup-submission.php'; } else { var actionurl = 'https://quick-works.com/wp-content/themes/quickworks/custom-form-submission.php'; } } $.ajax({ type: "POST", url: actionurl, data: formData, beforeSend: function(){ if(formID != 'thank_you_subscription_form'){ $('.bdy_wrp').addClass("ajax-loader"); } if(formID == 'thank_you_subscription_form'){ $(".sbct_frm #thank_you_subscription_form").addClass("subsc-loader"); } }, success: function(data) { $(form).find(':input[type=submit]').val("Submit"); $(form).find(':input[type=submit]').prop('disabled', false); if(formID == 'thank_you_subscription_form'){ $(form).find("#emailaddress").val(''); $(".sbct_frm #thank_you_subscription_form").removeClass("subsc-loader"); $(form).siblings('#thank_you_subscription_mesg').html(data); setTimeout(function(){ $(form).siblings('#thank_you_subscription_mesg').hide(); }, 8000); } else if(formID == 'demo_vid') { $('.bdy_wrp').removeClass("ajax-loader"); $("#"+formID).trigger('reset'); $('#youtube_video').attr('src', form.vdo_url.value + '?autoplay=1'); $('#watchvideo').modal('show'); $('#commonpopupvdo').modal('hide'); } else { $('.bdy_wrp').removeClass("ajax-loader"); if(data == "success") { // $(".notify-msg").show().delay(7000).fadeOut(); $("#"+formID).trigger('reset'); window.location.href = 'https://quick-works.com/thankyou'; } else if(data.includes('adminLogin')) { $("#signupModal").modal('show'); $("#"+formID).trigger('reset'); window.location.href = data; } else { if(formID == 'pln_sinp') { $(".notify-msg-error").html(''); $(".notify-msg-error").html(data); $(".notify-msg-error").show().delay(7000).fadeOut(); } else { $(".notify-msg-error").show().delay(7000).fadeOut(); $("#"+formID).trigger('reset'); } } } }, error: function(er) { $('.bdy_wrp').removeClass("ajax-loader"); if(formID == 'thank_you_subscription_form'){ $('.sbct_frm #thank_you_subscription_form').removeClass("subsc-loader"); } console.log('System Error'); }, complete: function(data) { if(formID == 'footer_custom_form') { $(form).find(':input').not(':button, :submit, :reset, :hidden').val('').removeAttr('checked').removeAttr('selected'); } }, cache: false, contentType: false, processData: false }); return false; } }); } } }) $.validator.addMethod("alpha", function(value, element) { return this.optional(element) || value == value.match(/^[a-zA-Z\s]+$/); }, 'Please Enter only Alphabets'); jQuery.validator.addMethod("locMethod", function(value, element) { if (googleAdressFill === 0) return this.optional(element); else return true; }, "Please choose from the sugguested location."); jQuery.validator.addMethod("moduleMethod", function(value, element) { if (moduledt === 1) return this.optional(element); else return true; }, "Please select at least one Module."); $.validator.messages.required = function (param, input) { //console.log(input.tagName); if(input.tagName == 'SELECT'){ var str = input.innerHTML; var c = str.substring(0, str.indexOf('')); var mySubString = c.substring( str.indexOf(">") + 1, str.lastIndexOf("") ); return 'Please ' + mySubString; } else if(input.tagName == 'TEXTAREA'){ return 'Please Enter Your Description'; } else if(input.type == 'password'){ return 'Please Enter Your Password'; } else { return 'Please Enter Your ' + input.placeholder; } } $.validator.messages.minlength = function (param, input) { if(input.name == 'signup_password'){ return 'Your password must be have at least 8 characters long'; } else{ return 'Please enter at least ' + param + ' characters for ' + input.placeholder; } } $.validator.messages.maxlength = function (param, input) { return 'Please enter no more than ' + param + ' characters for ' + input.placeholder; } $.validator.messages.digits = function (param, input) { return 'Please enter only digits for ' + input.placeholder; } $.validator.addMethod("mobileValidation", function(value, element) { var filter = /^[1-9][0-9]{6,15}$/; var phn_filter = /^(\d)(?!\1+$)\d{6,15}$/; if (filter.test(value)) { if(phn_filter.test(value)) { return true; } return false; } },"Please enter valid number." ); $('input[name="phonenumber"], input[name="phone_number"]').keypress(function (e) { if ($(this).val().length > 14) { return false; } else { e = (e) ? e : window.event; var charCode = (e.which) ? e.which : e.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; // $(this).val($(this).val().replace(/[^0-9\.]/g,'')) //this.value = this.value.replace(/[^0-9\.]/g,''); } }); $("input[name='fullname']").keypress(function (event) { var regex = new RegExp("^[a-zA-Z ]+$"); var key = String.fromCharCode(!event.charCode ? event.which : event.charCode); if (!regex.test(key)) { event.preventDefault(); return false; } }); var Phones = document.querySelectorAll('input[name="phonenumber"]'); Phones.forEach((phone) => { fncountryCode(phone); }); function fncountryCode(data) { window.intlTelInput(data,{ utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.3/js/utils.min.js", defaultCountry: "auto", hiddenInput: "full_number", geoIpLookup: function(callback) { var countryCode = country_code; var country_code1; $.get('https://www.cloudflare.com/cdn-cgi/trace', function(data) { data = data.trim().split('\n').reduce(function(obj, pair) { pair = pair.split('='); return obj[pair[0]] = pair[1], obj; }, {}); country_code1 = data.loc; ip = data.ip; $('.countryName').val(country_code1); $('.ipAddress').val(ip); if(country_code1 == 'IR' || country_code1 == 'IL' || country_code1 == 'EG' || country_code1 == 'IQ' || country_code1 == 'LB' || country_code1 == 'TR' || country_code1 == 'PS' || country_code1 == 'DZ' || country_code1 == 'SY' || country_code1 == 'YE' || country_code1 == 'MA' || country_code1 == 'JO' ||country_code1 == 'BH' || country_code1 == 'BHR' || country_code1 == 'JO' ||country_code1 == 'QA' || country_code1 == 'KW' || country_code1 == 'AE' || country_code1 == 'OM' || country_code1 == 'SA' || country_code1 == 'SD' ) { $('.tpbr_inr').addClass('middle_east'); $('#blktnx_popup_mn').show(); } callback(country_code1); }) }, initialCountry: "auto", separateDialCode: true, autoHideDialCode: false }); } /** Common Exist Popup Start */ const CookieService = { setCookieData(name, value, days) { let expires = ''; if (days) { const date = new Date(); date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000)); expires = '; expires=' + date.toUTCString(); } document.cookie = name + '=' + (value || '') + expires + ';'; }, getCookieData(name) { const cookies = document.cookie.split(';'); for (const cookie of cookies) { if (cookie.indexOf(name + '=') > -1) { return cookie.split('=')[1]; } } return null; } }; const mouseEvent = e => { const shouldShowExitIntent = !e.toElement && !e.relatedTarget && e.clientY < 10; if (shouldShowExitIntent) { document.removeEventListener('mouseout', mouseEvent); setTimeout(function() { $('#leav_ppup').modal('show'); }, 1000); //CookieService.setCookieData('exitIntentShown', true); } }; /* if (!CookieService.getCookieData('exitIntentShown')) { } setTimeout(() => { }, 1000);*/ document.addEventListener('mouseout', mouseEvent); /** Common Exit Popup End */ $('#entr_ppup').on('click', function() { $(this).modal('hide'); }); }); /*refferal_url*/ $( document ).ready(function() { var modalShown = sessionStorage.getItem('modalShown'); if (!modalShown) { setTimeout(function() { $('#entr_ppup').modal('show'); sessionStorage.setItem('modalShown', true); }, 1000); // 1000 seconds delay (1000 * 1000 milliseconds) } var pageURL = $(location).attr("href"); if (pageURL.indexOf("rf_url") > -1) { var rf_url_data = pageURL.split('?rf_url').pop(); rf_url_data = rf_url_data.replace("=https", "https"); rf_url_data1 = rf_url_data.replace(/&utm_source/, "?utm_source"); $('.refferal_page_check').val(rf_url_data1); //console.log('Referral URL on other page : ' + rf_url_data); $("body a").click(function(){ //alert('teter'); var class_1 = $(this).hasClass('navigation__link'); if(class_1 == true || $(this).hasAttr('data-bs-toggle')) { //console.log("class exist "+class_1); } else { var is_utm_srouce = $(this).attr('href'); var new_href = is_utm_srouce+'?rf_url='+rf_url_data; $(this).attr("href", new_href); } }); } else { if (pageURL.indexOf("utm_source") > -1) { console.log('utm is exist'); $('.refferal_page_check').val(pageURL); $("body a").click(function(){ var class_1 = $(this).hasClass('navigation__link'); if(class_1 == true || $(this).hasAttr('data-bs-toggle')) { // console.log("class exist "+class_1); console.log(class_2); } else { var is_utm_srouce = $(this).attr('href'); if(is_utm_srouce.indexOf("utm_source") > -1) { //alert('url has utm source'); } else { //alert('no utm source'); pageURL = pageURL.replace("?", "&"); var new_href1 = is_utm_srouce+'?rf_url='+pageURL; $(this).attr("href", new_href1); } } }); } } $.fn.hasAttr = function(name) { return this.attr(name) !== undefined; }; });