How to add default or custom OpenCart modules in the Journal theme?

In Opencart tips and tricks, we are showing how to add default or custom OpenCart modules in Journal 3 OpenCart theme.

  • Go to Journal >> Layouts >> then edit where you want to show the OpenCart custom or default theme.
  • Then hover over to the row that you want to show the image and click “Add Module” + button.
Add Opencart module in Journal 3 theme

  • This will add a content section, then click on it and a popup with lists of modules shows.
Lists of modules in Opencart 3
  • Go to the bottom of the popup and click “Opencart”
  • This gives lists of default Opencart modules
  • Choose, edit them as per your requirement, and add them to that layout.

Read: Learn Journal theme customization coding tutorial

We hope that tips help someone. Let us know if you have any questions or suggestions, please subscribe to our YouTube Channel for Opencart video tutorials and find more Opencart tips and tricks. You can also join us on Twitter and Facebook.

How to install a free SSL certificate on Opencart Let’s Encrypt™

The SSL certificate is needed to encrypt all communication between the browser and the server, which ensures that all communication and data goes through a secure (HTTPS) connection.

Is the SSL certificate required on Opencart?

SSL certificate is required on OpenCart as it shows reliability and security to customer/visitors and gain your clients’ trust and somewhat helps to increase your website’s search engines ranking.

Which are the pages that we have to make SSL in the e-commerce site?

SSL should be activated everywhere, but important where sensitive data are to be transferred from user to server. My account, Login and checkout URL should be on SSL. But whoever is providing the SSL certificate they provide for the whole domain so just install throughout the domain.

Server settings for the Encrypts SSL

Login to your Cpanel and check the section Security

Cpanel Security Section

Click the “Lets Encrypt™ SSL“.

Let's Encrypt certificates

Click +Issue. SSL is installed on the domain.

Installation of SSL certificate

You can verify by going to the Security section of the dashboard and click “SSL/TLS Status” check if “AutoSSL Domain Validated” is showing for each domain.

Auto SSL domain validated

If you don’t see it then go to Security section of the dashboard and click “SSL/TLS”

Installed SSL websites

Then click on the “Browse Certificates” and select your certificate and install click install at the end.

Now your server is ready now need to do some setting change in the admin dashboard.

Three points to do for activation of the SSL certificate or digital certificate are below for OpenCart:

  • Enable SSL in System->Settings->Edit->Server->Use SSL and select Yes.
digital certificate for Opencart
  • Check if there is https in /config.php and /admin/config.php
  • Change the .htaccess in your Apache server like below:
RewriteCond %{HTTP_HOST} ^webocreation\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://webocreation.com/$1 [R,L]

Replace webocreation.com with your site URL in the above code. It redirects all non-https to https URL, likewise, it will redirects www URLs to non-www URL if you want the www then add www at the last line.

If you encounter an SSL problem with opencart follow these steps to solve it.

1. Make sure you update both config files with “https”
2. Make sure you turn ON SSL under backend – system>settings>edit>server
3. If you are using Plesk make sure you check the box for domain settings that says “Use a single directory for housing SSL and non-SSL content”

How we can know that there is a problem in the Opencart installation of SSL?

Put up a simple index.html test file and then access it via https://yourdomain.com/index.html if you get an error there it has nothing to do with opencart. If you don’t then opencart should work.

If you found this error “SSL_ERROR_TX_RECORD_TOO_LONG”
-Then it means that the SSL was not installed on your host properly.

Stop Google from indexing all of your SSL pages

First, make 1 robots.txt file and 1 robots_ssl.txt file. You could put anything in them, but the default would be something like this:

In robots.txt

User-agent: *
Allow: /

In robots_ssl.txt:

User-agent: *
Disallow: /

Then, in your .htaccess file, add this

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{SERVER_PORT} ^443$
RewriteRule ^robots.txt$ robots_ssl.txt

If you’re using the .htaccess that comes with OpenCart then the first two lines are already added in the .htaccess file for you, you would just add in the RewriteCond and RewriteRule lines.

We hope this helps someone to set up SSL properly and easily in Opencart. Please don’t forget to post your questions or comments so that we can add extra topics. You can follow us at our twitter account @rupaknpl and subscribe to our YouTube channel for opencart tutorials.

Marketo API – export all Forms and their Fields from our Marketo database

We worked in Marketo JavaScript Marketo API where we have to export all forms and their fields from our Marketo database. With custom API extraction, we are able to export all Forms and their Fields from our Marketo database which we tested through the API which is shown in the attached images.

Login into marketo.com and click admin >> Then Integration >> LaunchPoint where you will see a list of Service. If you already have created the API the service then click the “View Details”, then click the “GET TOKEN”

Get API token Marketo

This is the access token “7a96ebb0-58dd-45cd-8614-f5b2242664fd:sj” which is TOKENGENERATEDINMARKETOAPI in the URL. MARKETOID is the Marketo account id, you can get the REST API endpoint at admin >> Integration >> Web Services where you can find the endpoint URL like https://MARKETOID.mktorest.com/rest

To get all the forms the endpoint URL is

https://MARKETOID.mktorest.com/rest/asset/v1/forms.json?access_token=TOKENGENERATEDINMARKETOAPI

All forms Marketo

It pulls all of the forms from the Marketo database which are published. One of the form detail is like below:

{
    "id": 1424,
    "name": "2018.FORM-Request",
    "description": "",
    "createdAt": "2018-07-30T18:02:04Z+0000",
    "updatedAt": "2018-07-30T18:02:04Z+0000",
    "url": "https://app-sj44.marketo.com/#FO1424",
    "status": "approved",
    "theme": "simple",
    "language": "English",
    "locale": "en_US",
    "progressiveProfiling": true,
    "labelPosition": "above",
    "fontFamily": "Helvetica",
    "fontSize": "14px",
    "folder": {
        "type": "Folder",
        "value": 1408,
        "folderName": "Form"
    },
    "knownVisitor": {
        "type": "form",
        "template": null
    },
    "thankYouList": [
        {
            "followupType": "none",
            "followupValue": null,
            "default": true
        }
    ],
    "buttonLocation": 10,
    "buttonLabel": "CONTACT ME",
    "waitingLabel": "PLEASE WAIT..."
}

To get fields of a form the endpoint URL is

With the above JSON, we can get the ID of the form like “id”: 1424 then we pull the fields of that form with the following endpoint URL

https://MARKETOID.mktorest.com/rest/asset/v1/form/1424/fields.json?access_token=TOKENGENERATEDINMARKETOAPI

Forms fields Marketo

You will get the JSON response like below, as per below JSON the form has 3 fields First Name, Last Name and Email.

{
    "success": true,
    "errors": [],
    "requestId": "16376#1715271cde8",
    "warnings": [],
    "result": [
        {
            "id": "FirstName",
            "label": "First Name:",
            "labelWidth": 420,
            "fieldWidth": 420,
            "dataType": "text",
            "validationMessage": "This field is required.",
            "rowNumber": 0,
            "columnNumber": 0,
            "maxLength": 255,
            "required": true,
            "formPrefill": true,
            "visibilityRules": {
                "ruleType": "alwaysShow"
            }
        },
        {
            "id": "LastName",
            "label": "Last Name:",
            "labelWidth": 420,
            "fieldWidth": 420,
            "dataType": "text",
            "validationMessage": "This field is required.",
            "rowNumber": 1,
            "columnNumber": 0,
            "maxLength": 255,
            "required": true,
            "formPrefill": true,
            "visibilityRules": {
                "ruleType": "alwaysShow"
            }
        },
        {
            "id": "Email",
            "label": "Email Address:",
            "labelWidth": 420,
            "fieldWidth": 420,
            "dataType": "email",
            "validationMessage": "Must be valid email. <span class='mktoErrorDetail'>example@yourdomain.com</span>",
            "rowNumber": 2,
            "columnNumber": 0,
            "required": true,
            "formPrefill": true,
            "visibilityRules": {
                "ruleType": "alwaysShow"
            }
        }
    ]
}

In this way, we can export all forms and their fields from our Marketo database. The time taking part can be how you want the data to show. Please don’t forget to post your questions or comments or errors so that we can help you. You can follow us at our twitter account @rupaknpl. Click to see other Salesforce Marketo blog posts.

Display all products opencart module for free version 2.3, 2.2, 2.1, 2.0

Another free Opencart module to display all products on a custom page, we show you how to install steps and have provided all code definitions.

Steps to install “All Products Show in One Page” opencart 2.3 module free:
For OpenCart Version 3.0.*.* visit here

  • Download the module
    Download Show all product module in one page opencart versions 2.3
  • Extract the zip file.
  • Upload the catalog folder which is inside “List out all products OpenCart 2.2” to your server “catalog” folder
  • Now login to the admin section then go to Extensions >> Extension Installer >> where you upload the all.install.ocmod.xml if you see any error then see how to solve the Ocmod installation error.
  • After successful installation, go to Extensions>> Modification and click the log tab and see if some errors are showing, if the error shows then you have to solve it first.
  • If no error click the refresh button
  • You are all set.
  • If you have multiple languages then you have to translate the catalog/language/en-gb/product/allproduct.php and place into catalog/language/YOURLANGUAGEFOLDER/product
  • Enjoy the free module.

How to add modules on this page?

  • Go to Admin >> Design >> Layout >> Click the add button
  • Then fill out as follows:
  • The output will be as below:

How to stop showing all products link?

If you do not need this then you can disable and delete the “List Out All Products OpenCart 2.3 OCmod”.

Go to Admin >> Extensions >> Modifications >> Disable “List Out All Products OpenCart 2.3 OCmod” or you can delete it as well and you will not see the All products links in the menu.

You can follow at my twitter account @rupaknpl and subscribe to YouTube user Opencart Tutorials.

For questions, errors, suggestions at this email webocreation.com@gmail.com.

Below are steps for the OpenCart module 2.2 and below

Installation:

  1. Unzip “Show+All+Products+Module.zip” in the folder of your choice.
  2. Upload all the files to the root folder to your server, no files are overwritten.
  3. Be sure you have VqMod installed.

You can easily download here and enjoy the module. If you got any error or problems then let me know so that I can see how to improve it and make it more friendly.

DOWNLOAD SHOW ALL PRODUCT MODULE for 2.0.1.1

DOWNLOAD SHOW ALL PRODUCT MODULE for 2.2.0.0

eCommerce Solution: I have created the Show all products extension on OpenCart which I am sharing with you all for free

DEMO

It lists out all the products with the pagination feature available. Most of my clients asked for this extension so I think this will be helpful for you all so I post it here.

 Display All Products OpenCart Module

Codes are written are on the following files

Ocmod file named all.install.ocmod.xml for opencart version 2.3

<?xml version="1.0" encoding="utf-8"?>
<modification>
    <name>List Out All Products OpenCart 2.3 OCmod</name>
    <version>1.0</version>
    <author>Rupak Nepali, Webocreation.com</author>
    <code>List_all_Products</code>
    <link>https://webocreation.com</link>
    <file path="catalog/controller/common/header.php">
        <operation>
            <search><![CDATA[
            $data['categories'] = array();
            ]]></search>
            <add position="After"><![CDATA[
                $this->load->language('product/allproduct');
                $data['categories'][] = array(
                    'name'     => $this->language->get('all_product'),
                    'children' => "",
                    'column'   => 1,
                    'href'     => $this->url->link('product/allproduct')
                );
            ]]></add>
        </operation>
    </file>
</modification>

Vqmod vqmod\xml\all.install.ocmod.xml to show “All Products” link in the top menu.

<modification>	
	<version>OpenCart Version 2.2</version>
	<vqmver>2.0.0</vqmver>
	<author>Rupak Nepali</author>
	    <code>List_all_Products</code>
	<file name="catalog/view/theme/*/template/common/header.tpl" error="skip">
		<operation>
			<search position="after"><![CDATA[
				<ul class="nav navbar-nav">
			]]></search>
			<add><![CDATA[
				<li><a href="index.php?route=product/allproduct">All Products</a></li>
			]]></add>
		</operation>
	</file>
</modification>

Language file catalog\language\en-gb\product\allproduct.php

<?php

$_['page_title']        = 'All Products List';
$_['meta_description']  = 'All Products List';
$_['meta_keyword']      = 'All Products List';
$_['heading_title']     = 'All Products List';

// Text

$_['text_refine']       = 'Refine Search';
$_['text_product']      = 'Products';
$_['text_error']        = 'all products not found!';
$_['text_empty']        = 'There are no products to list in this all products.';
$_['text_quantity']     = 'Qty:';
$_['text_manufacturer'] = 'Brand:';
$_['text_model']        = 'Product Code:';
$_['text_points']       = 'Reward Points:';
$_['text_price']        = 'Price:';
$_['text_tax']          = 'Ex Tax:';
$_['text_compare']      = 'Product Compare (%s)';
$_['text_sort']         = 'Sort By:';
$_['text_default']      = 'Default';
$_['text_name_asc']     = 'Name (A - Z)';
$_['text_name_desc']    = 'Name (Z - A)';
$_['text_price_asc']    = 'Price (Low &gt; High)';
$_['text_price_desc']   = 'Price (High &gt; Low)';
$_['text_rating_asc']   = 'Rating (Lowest)';
$_['text_rating_desc']  = 'Rating (Highest)';
$_['text_model_asc']    = 'Model (A - Z)';
$_['text_model_desc']   = 'Model (Z - A)';
$_['text_limit']        = 'Show:';

Controller file catalog\controller\product\allproduct.php

<?php
class ControllerProductAllproduct extends Controller {
 public function index() {
 $this->load->language('product/allproduct');

 $this->load->model('catalog/allproduct');

 $this->load->model('catalog/product');

 $this->load->model('tool/image');
 $this->document->setTitle($this->language->get('page_title'));
 $this->document->setDescription($this->language->get('meta_description'));
 $this->document->setKeywords($this->language->get('meta_keyword'));

 $data['heading_title'] = $this->language->get('heading_title');
 if (isset($this->request->get['filter'])) {
 $filter = $this->request->get['filter'];
 } else {
 $filter = '';
 }

 if (isset($this->request->get['sort'])) {
 $sort = $this->request->get['sort'];
 } else {
 $sort = 'p.sort_order';
 }

 if (isset($this->request->get['order'])) {
 $order = $this->request->get['order'];
 } else {
 $order = 'ASC';
 }

 if (isset($this->request->get['page'])) {
 $page = $this->request->get['page'];
 } else {
 $page = 1;
 }

 if (isset($this->request->get['limit'])) {
 $limit = (int)$this->request->get['limit'];
 } else {
 $limit = $this->config->get($this->config->get('config_theme') . '_product_limit');
 }

 $data['breadcrumbs'] = array();

 $data['breadcrumbs'][] = array(
 'text' => $this->language->get('text_home'),
 'href' => $this->url->link('common/home')
 );

 $allproduct_info = $this->model_catalog_allproduct->getAllProduct();

 if ($allproduct_info) {


 $data['text_refine'] = $this->language->get('text_refine');
 $data['text_empty'] = $this->language->get('text_empty');
 $data['text_quantity'] = $this->language->get('text_quantity');
 $data['text_manufacturer'] = $this->language->get('text_manufacturer');
 $data['text_model'] = $this->language->get('text_model');
 $data['text_price'] = $this->language->get('text_price');
 $data['text_tax'] = $this->language->get('text_tax');
 $data['text_points'] = $this->language->get('text_points');
 $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0));
 $data['text_sort'] = $this->language->get('text_sort');
 $data['text_limit'] = $this->language->get('text_limit');

 $data['button_cart'] = $this->language->get('button_cart');
 $data['button_wishlist'] = $this->language->get('button_wishlist');
 $data['button_compare'] = $this->language->get('button_compare');
 $data['button_continue'] = $this->language->get('button_continue');
 $data['button_list'] = $this->language->get('button_list');
 $data['button_grid'] = $this->language->get('button_grid');

$data['compare'] = $this->url->link('product/compare');


 // Set the last AllProduct breadcrumb
 $data['breadcrumbs'][] = array(
 'text' => $this->language->get('heading_title'),
 'href' => $this->url->link('product/allproduct')
 );
 $url = '';
 $data['products'] = array();
 $filter_data = array(
 'filter_filter'      => $filter,
 'sort'               => $sort,
 'order'              => $order,
 'start'              => ($page - 1) * $limit,
 'limit'              => $limit
 );

 $product_total = $this->model_catalog_product->getTotalProducts($filter_data);
 $results = $this->model_catalog_product->getProducts($filter_data);
 foreach ($results as $result) {
 if ($result['image']) {
 $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
 } else {
 $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height'));
 }

 if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) {
 $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
 } else {
 $price = false;
 }

 if ((float)$result['special']) {
 $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']);
 } else {
 $special = false;
 }

 if ($this->config->get('config_tax')) {
 $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']);
 } else {
 $tax = false;
 }

 if ($this->config->get('config_review_status')) {
 $rating = (int)$result['rating'];
 } else {
 $rating = false;
 }

 $data['products'][] = array(
 'product_id'  => $result['product_id'],
 'thumb'       => $image,
 'name'        => $result['name'],
 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')) . '..',
 'price'       => $price,
 'special'     => $special,
 'tax'         => $tax,
 'minimum'     => $result['minimum'] > 0 ? $result['minimum'] : 1,
 'rating'      => $result['rating'],
 'href'        => $this->url->link('product/product', '&product_id=' . $result['product_id'] .$url)
 );
 }

 $url = '';

 if (isset($this->request->get['filter'])) {
 $url .= '&filter=' . $this->request->get['filter'];
 }

 if (isset($this->request->get['limit'])) {
 $url .= '&limit=' . $this->request->get['limit'];
 }

 $data['sorts'] = array();

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_default'),
 'value' => 'p.sort_order-ASC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_name_asc'),
 'value' => 'pd.name-ASC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_name_desc'),
 'value' => 'pd.name-DESC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_price_asc'),
 'value' => 'p.price-ASC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_price_desc'),
 'value' => 'p.price-DESC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 if ($this->config->get('config_review_status')) {
 $data['sorts'][] = array(
 'text'  => $this->language->get('text_rating_desc'),
 'value' => 'rating-DESC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_rating_asc'),
 'value' => 'rating-ASC',
 'href'  => $this->url->link('product/allproduct', $url)
 );
 }

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_model_asc'),
 'value' => 'p.model-ASC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 $data['sorts'][] = array(
 'text'  => $this->language->get('text_model_desc'),
 'value' => 'p.model-DESC',
 'href'  => $this->url->link('product/allproduct', $url)
 );

 $url = '';

 if (isset($this->request->get['filter'])) {
 $url .= '&filter=' . $this->request->get['filter'];
 }

 if (isset($this->request->get['sort'])) {
 $url .= '&sort=' . $this->request->get['sort'];
 }

 if (isset($this->request->get['order'])) {
 $url .= '&order=' . $this->request->get['order'];
 }

 $data['limits'] = array();

 $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100));

 sort($limits);

 foreach($limits as $value) {
 $data['limits'][] = array(
 'text'  => $value,
 'value' => $value,
 'href'  => $this->url->link('product/allproduct', $url . '&limit=' . $value)
 );
 }

 $url = '';

 if (isset($this->request->get['filter'])) {
 $url .= '&filter=' . $this->request->get['filter'];
 }

 if (isset($this->request->get['sort'])) {
 $url .= '&sort=' . $this->request->get['sort'];
 }

 if (isset($this->request->get['order'])) {
 $url .= '&order=' . $this->request->get['order'];
 }

 if (isset($this->request->get['limit'])) {
 $url .= '&limit=' . $this->request->get['limit'];
 }

 $pagination = new Pagination();
 $pagination->total = $product_total;
 $pagination->page = $page;
 $pagination->limit = $limit;
 $pagination->url = $this->url->link('product/allproduct', $url . '&page={page}');

 $data['pagination'] = $pagination->render();

 $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit));

 if ($page == 1) {
     $this->document->addLink($this->url->link('product/allproduct', '', true), 'canonical');
 } elseif ($page == 2) {
     $this->document->addLink($this->url->link('product/allproduct', '', true), 'prev');
 } else {
     $this->document->addLink($this->url->link('product/allproduct', '&page='. ($page - 1), true), 'prev');
 }

 if ($limit && ceil($product_total / $limit) > $page) {
     $this->document->addLink($this->url->link('product/allproduct', '&page='. ($page + 1), true), 'next');
 }

 $data['sort'] = $sort;
 $data['order'] = $order;
 $data['limit'] = $limit;

 $data['continue'] = $this->url->link('common/home');

 $data['column_left'] = $this->load->controller('common/column_left');
 $data['column_right'] = $this->load->controller('common/column_right');
 $data['content_top'] = $this->load->controller('common/content_top');
 $data['content_bottom'] = $this->load->controller('common/content_bottom');
 $data['footer'] = $this->load->controller('common/footer');
 $data['header'] = $this->load->controller('common/header');

 $this->response->setOutput($this->load->view('product/allproduct', $data));
 } else {
 $url = '';

 if (isset($this->request->get['filter'])) {
 $url .= '&filter=' . $this->request->get['filter'];
 }

 if (isset($this->request->get['sort'])) {
 $url .= '&sort=' . $this->request->get['sort'];
 }

 if (isset($this->request->get['order'])) {
 $url .= '&order=' . $this->request->get['order'];
 }

 if (isset($this->request->get['page'])) {
 $url .= '&page=' . $this->request->get['page'];
 }

 if (isset($this->request->get['limit'])) {
 $url .= '&limit=' . $this->request->get['limit'];
 }

 $data['breadcrumbs'][] = array(
 'text' => $this->language->get('text_error'),
 'href' => $this->url->link('product/allproduct', $url)
 );

 $this->document->setTitle($this->language->get('text_error'));

 $data['heading_title'] = $this->language->get('text_error');

 $data['text_error'] = $this->language->get('text_error');

 $data['button_continue'] = $this->language->get('button_continue');

 $data['continue'] = $this->url->link('common/home');

 $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found');

 $data['column_left'] = $this->load->controller('common/column_left');
 $data['column_right'] = $this->load->controller('common/column_right');
 $data['content_top'] = $this->load->controller('common/content_top');
 $data['content_bottom'] = $this->load->controller('common/content_bottom');
 $data['footer'] = $this->load->controller('common/footer');
 $data['header'] = $this->load->controller('common/header');

 $this->response->setOutput($this->load->view('error/not_found', $data));
 }
 }
}

Model file at catalog\model\catalog\allproduct.php

<?php
class ModelCatalogAllProduct extends Model {
	public function getAllProduct($data = array()) {
		$sql = "SELECT p.product_id, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special";

		if (!empty($data['filter_category_id'])) {
			if (!empty($data['filter_sub_category'])) {
				$sql .= " FROM " . DB_PREFIX . "category_path cp LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (cp.category_id = p2c.category_id)";
			} else {
				$sql .= " FROM " . DB_PREFIX . "product_to_category p2c";
			}

			if (!empty($data['filter_filter'])) {
				$sql .= " LEFT JOIN " . DB_PREFIX . "product_filter pf ON (p2c.product_id = pf.product_id) LEFT JOIN " . DB_PREFIX . "product p ON (pf.product_id = p.product_id)";
			} else {
				$sql .= " LEFT JOIN " . DB_PREFIX . "product p ON (p2c.product_id = p.product_id)";
			}
		} else {
			$sql .= " FROM " . DB_PREFIX . "product p";
		}

		$sql .= " LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'";

		if (!empty($data['filter_category_id'])) {
			if (!empty($data['filter_sub_category'])) {
				$sql .= " AND cp.path_id = '" . (int)$data['filter_category_id'] . "'";
			} else {
				$sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
			}

			if (!empty($data['filter_filter'])) {
				$implode = array();

				$filters = explode(',', $data['filter_filter']);

				foreach ($filters as $filter_id) {
					$implode[] = (int)$filter_id;
				}

				$sql .= " AND pf.filter_id IN (" . implode(',', $implode) . ")";
			}
		}

		if (!empty($data['filter_name']) || !empty($data['filter_tag'])) {
			$sql .= " AND (";

			if (!empty($data['filter_name'])) {
				$implode = array();

				$words = explode(' ', trim(preg_replace('/\s+/', ' ', $data['filter_name'])));

				foreach ($words as $word) {
					$implode[] = "pd.name LIKE '%" . $this->db->escape($word) . "%'";
				}

				if ($implode) {
					$sql .= " " . implode(" AND ", $implode) . "";
				}

				if (!empty($data['filter_description'])) {
					$sql .= " OR pd.description LIKE '%" . $this->db->escape($data['filter_name']) . "%'";
				}
			}

			if (!empty($data['filter_name']) && !empty($data['filter_tag'])) {
				$sql .= " OR ";
			}

			if (!empty($data['filter_tag'])) {
				$sql .= "pd.tag LIKE '%" . $this->db->escape($data['filter_tag']) . "%'";
			}

			if (!empty($data['filter_name'])) {
				$sql .= " OR LCASE(p.model) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				$sql .= " OR LCASE(p.sku) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				$sql .= " OR LCASE(p.upc) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				$sql .= " OR LCASE(p.ean) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				$sql .= " OR LCASE(p.jan) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				$sql .= " OR LCASE(p.isbn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
				$sql .= " OR LCASE(p.mpn) = '" . $this->db->escape(utf8_strtolower($data['filter_name'])) . "'";
			}

			$sql .= ")";
		}

		if (!empty($data['filter_manufacturer_id'])) {
			$sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'";
		}

		$sql .= " GROUP BY p.product_id";

		$sort_data = array(
			'pd.name',
			'p.model',
			'p.quantity',
			'p.price',
			'rating',
			'p.sort_order',
			'p.date_added'
		);

		if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
			if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
				$sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
			} elseif ($data['sort'] == 'p.price') {
				$sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)";
			} else {
				$sql .= " ORDER BY " . $data['sort'];
			}
		} else {
			$sql .= " ORDER BY p.sort_order";
		}

		if (isset($data['order']) && ($data['order'] == 'DESC')) {
			$sql .= " DESC, LCASE(pd.name) DESC";
		} else {
			$sql .= " ASC, LCASE(pd.name) ASC";
		}

		if (isset($data['start']) || isset($data['limit'])) {
			if ($data['start'] < 0) {
				$data['start'] = 0;
			}

			if ($data['limit'] < 1) {
				$data['limit'] = 20;
			}

			$sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit'];
		}

		$product_data = array();

		$query = $this->db->query($sql);

		foreach ($query->rows as $result) {
			$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
		}

		return $product_data;
	}

	public function getProduct($product_id) {
		$query = $this->db->query("SELECT DISTINCT *, pd.name AS name, p.image, m.name AS manufacturer, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT points FROM " . DB_PREFIX . "product_reward pr WHERE pr.product_id = p.product_id AND customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "') AS reward, (SELECT ss.name FROM " . DB_PREFIX . "stock_status ss WHERE ss.stock_status_id = p.stock_status_id AND ss.language_id = '" . (int)$this->config->get('config_language_id') . "') AS stock_status, (SELECT wcd.unit FROM " . DB_PREFIX . "weight_class_description wcd WHERE p.weight_class_id = wcd.weight_class_id AND wcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS weight_class, (SELECT lcd.unit FROM " . DB_PREFIX . "length_class_description lcd WHERE p.length_class_id = lcd.length_class_id AND lcd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS length_class, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT COUNT(*) AS total FROM " . DB_PREFIX . "review r2 WHERE r2.product_id = p.product_id AND r2.status = '1' GROUP BY r2.product_id) AS reviews, p.sort_order FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "manufacturer m ON (p.manufacturer_id = m.manufacturer_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "'");

		if ($query->num_rows) {
			return array(
				'product_id'       => $query->row['product_id'],
				'name'             => $query->row['name'],
				'description'      => $query->row['description'],
				'meta_title'       => $query->row['meta_title'],
				'meta_description' => $query->row['meta_description'],
				'meta_keyword'     => $query->row['meta_keyword'],
				'tag'              => $query->row['tag'],
				'model'            => $query->row['model'],
				'sku'              => $query->row['sku'],
				'upc'              => $query->row['upc'],
				'ean'              => $query->row['ean'],
				'jan'              => $query->row['jan'],
				'isbn'             => $query->row['isbn'],
				'mpn'              => $query->row['mpn'],
				'location'         => $query->row['location'],
				'quantity'         => $query->row['quantity'],
				'stock_status'     => $query->row['stock_status'],
				'image'            => $query->row['image'],
				'manufacturer_id'  => $query->row['manufacturer_id'],
				'manufacturer'     => $query->row['manufacturer'],
				'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
				'special'          => $query->row['special'],
				'reward'           => $query->row['reward'],
				'points'           => $query->row['points'],
				'tax_class_id'     => $query->row['tax_class_id'],
				'date_available'   => $query->row['date_available'],
				'weight'           => $query->row['weight'],
				'weight_class_id'  => $query->row['weight_class_id'],
				'length'           => $query->row['length'],
				'width'            => $query->row['width'],
				'height'           => $query->row['height'],
				'length_class_id'  => $query->row['length_class_id'],
				'subtract'         => $query->row['subtract'],
				'rating'           => round($query->row['rating']),
				'reviews'          => $query->row['reviews'] ? $query->row['reviews'] : 0,
				'minimum'          => $query->row['minimum'],
				'sort_order'       => $query->row['sort_order'],
				'status'           => $query->row['status'],
				'date_added'       => $query->row['date_added'],
				'date_modified'    => $query->row['date_modified'],
				'viewed'           => $query->row['viewed']
			);
		} else {
			return false;
		}
	}
}

Template file catalog\view\theme\default\template\product\allproduct.tpl

<?php echo $header; ?> <div class="container">
    <ul class="breadcrumb"> <?php foreach ($breadcrumbs as $breadcrumb) { ?> <li><a
                href="<?php echo $breadcrumb['href']; ?>"><?php echo $breadcrumb['text']; ?></a></li> <?php } ?> </ul>
    <div class="row"><?php echo $column_left; ?> <?php if ($column_left && $column_right) { ?>
        <?php $class = 'col-sm-6'; ?> <?php } elseif ($column_left || $column_right) { ?> <?php $class = 'col-sm-9'; ?>
        <?php } else { ?> <?php $class = 'col-sm-12'; ?> <?php } ?> <div id="content" class="<?php echo $class; ?>">
            <?php echo $content_top; ?> <h2><?php echo $heading_title; ?></h2> <?php if ($products) { ?> <p><a
                    href="<?php echo $compare; ?>" id="compare-total"><?php echo $text_compare; ?></a></p>
            <div class="row">
                <div class="col-md-4">
                    <div class="btn-group hidden-xs"> <button type="button" id="list-view" class="btn btn-default"
                            data-toggle="tooltip" title="<?php echo $button_list; ?>"><i
                                class="fa fa-th-list"></i></button> <button type="button" id="grid-view"
                            class="btn btn-default" data-toggle="tooltip" title="<?php echo $button_grid; ?>"><i
                                class="fa fa-th"></i></button> </div>
                </div>
                <div class="col-md-2 text-right"> <label class="control-label"
                        for="input-sort"><?php echo $text_sort; ?></label> </div>
                <div class="col-md-3 text-right"> <select id="input-sort" class="form-control"
                        onchange="location = this.value;"> <?php foreach ($sorts as $sorts) { ?>
                        <?php if ($sorts['value'] == $sort . '-' . $order) { ?> <option
                            value="<?php echo $sorts['href']; ?>" selected="selected"><?php echo $sorts['text']; ?>
                        </option> <?php } else { ?> <option value="<?php echo $sorts['href']; ?>">
                            <?php echo $sorts['text']; ?></option> <?php } ?> <?php } ?> </select> </div>
                <div class="col-md-1 text-right"> <label class="control-label"
                        for="input-limit"><?php echo $text_limit; ?></label> </div>
                <div class="col-md-2 text-right"> <select id="input-limit" class="form-control"
                        onchange="location = this.value;"> <?php foreach ($limits as $limits) { ?>
                        <?php if ($limits['value'] == $limit) { ?> <option value="<?php echo $limits['href']; ?>"
                            selected="selected"><?php echo $limits['text']; ?></option> <?php } else { ?> <option
                            value="<?php echo $limits['href']; ?>"><?php echo $limits['text']; ?></option> <?php } ?>
                        <?php } ?> </select> </div>
            </div> <br />
            <div class="row"> <?php foreach ($products as $product) { ?> <div
                    class="product-layout product-list col-xs-12">
                    <div class="product-thumb">
                        <div class="image"><a href="<?php echo $product['href']; ?>"><img
                                    src="<?php echo $product['thumb']; ?>" alt="<?php echo $product['name']; ?>"
                                    title="<?php echo $product['name']; ?>" class="img-responsive" /></a></div>
                        <div>
                            <div class="caption">
                                <h4><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></h4>
                                <p><?php echo $product['description']; ?></p> <?php if ($product['rating']) { ?> <div
                                    class="rating"> <?php for ($i = 1; $i <= 5; $i++) { ?>
                                    <?php if ($product['rating'] < $i) { ?> <span class="fa fa-stack"><i
                                            class="fa fa-star-o fa-stack-2x"></i></span> <?php } else { ?> <span
                                        class="fa fa-stack"><i class="fa fa-star fa-stack-2x"></i><i
                                            class="fa fa-star-o fa-stack-2x"></i></span> <?php } ?> <?php } ?> </div>
                                <?php } ?> <?php if ($product['price']) { ?> <p class="price">
                                    <?php if (!$product['special']) { ?> <?php echo $product['price']; ?>
                                    <?php } else { ?> <span class="price-new"><?php echo $product['special']; ?></span>
                                    <span class="price-old"><?php echo $product['price']; ?></span> <?php } ?>
                                    <?php if ($product['tax']) { ?> <span class="price-tax"><?php echo $text_tax; ?>
                                        <?php echo $product['tax']; ?></span> <?php } ?> </p> <?php } ?>
                            </div>
                            <div class="button-group"> <button type="button"
                                    onclick="cart.add('<?php echo $product['product_id']; ?>', '<?php echo $product['minimum']; ?>');"><i
                                        class="fa fa-shopping-cart"></i> <span
                                        class="hidden-xs hidden-sm hidden-md"><?php echo $button_cart; ?></span></button>
                                <button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>"
                                    onclick="wishlist.add('<?php echo $product['product_id']; ?>');"><i
                                        class="fa fa-heart"></i></button> <button type="button" data-toggle="tooltip"
                                    title="<?php echo $button_compare; ?>"
                                    onclick="compare.add('<?php echo $product['product_id']; ?>');"><i
                                        class="fa fa-exchange"></i></button> </div>
                        </div>
                    </div>
                </div> <?php } ?> </div>
            <div class="row">
                <div class="col-sm-6 text-left"><?php echo $pagination; ?></div>
                <div class="col-sm-6 text-right"><?php echo $results; ?></div>
            </div> <?php } ?> <?php echo $content_bottom; ?>
        </div> <?php echo $column_right; ?></div>
</div> <?php echo $footer; ?>

what is the best salesforce tool to prevent overbooking?

What is the best salesforce tool to prevent overbooking?

Answer: Validation

Opencart eCommerce Advance Featured Module with product slider for free

We publishing another free Opencart eCommerce module “Advance Featured Module with product slider”. Some of the features of this free module are:

  • Show custom title
  • Aditional image flip flop
  • Hover over show add to cart, wishlist, and compare button
  • Sliding products
  • Can manage to slide of products from the admin
  • Show as many advances featured module as many you like
  • Absolutely free
  • None of the core files are changed
  • Responsive
featured front presentation section

Check demo: Click Advance Featured Module with product slider
You can see the following output after installing the module in information layout, which is only for demo purpose, you can install in any page and in any layout:

Advance Featured Module with product slider

Download the module for OpenCart 2.2 from below:

WebOCreation Featured Module

Installation:

  1. Unzip the downloaded folder.
  2. Upload the files and folders in the root folder to your server, put admin folder of zipping in admin folder of your server and catalog folder of zipping in catalog folder of your server
  3. Then activate the Advance Featured Module with product slider.

Activating the Advance Featured Module with product slider:

  1. After uploading files to servers, it’s time to install Advance Featured Module with product slider
  2. We are showing the Webocreation Featured Module with product slider in the content top and content-bottom of the information page but you can show it wherever you like as this is a normal module.
  3. Go to Admin section
  4. Then click on Extensions on the left menu
  5. After that Click Modules and go to Webocreation Featured Module with product slider in the modules list
  6. Then click the green button to install the module (see the image below)
  7. Then click blue edit button
  8. After that, you will see the form which has Module Name, Products, Limit, Width, Height, AutoPlay Speed, and status field, Fill it and select Enabled and then click Save button.
  9. Your module is active and is ready to use in the layout.

Setup layout for the Advance Featured Module at Information page:

  1. From the admin, section goes to Design >> Layouts.
  2. You will see a list of layouts, from which edit the Information layout.
  3. Then click Blue add a button to add rows at the module section which is shown in the image below:
  4. Second, you choose the Advance Featured Module in the module column and Column Bottom in the Position column and insert the sort order as required. Do the same to show another Webocreation Featured module at the content top also, refer to the above image.
  5. Then click save button

Your custom Advance Featured Module is showing in the two positions of the information page. Likewise, you can show in many other layouts and pages.

Let me know if you get any problem with performing the above tasks in the comment so that I can help.

Solution: Node.js Setup Wizard ended prematurely

0

How I fix “Node.js Setup Wizard ended prematurely”?

I am not able to install Nodejs. I was doing it with Setup Wizard downloaded for windows from nodejs.com and at the end of installation I get the message “Node.js Setup Wizard ended prematurely”.

Node.js setup wizard ended prematurely because of an error. Your system has not been modified. To install this program at a later time. run Setup Wizard again. Click the Finish button to exit the Setup Wizard.
I am able to install it by just disabling the “Performance Counter”.

Enjoy the video and happy NodeJs installation 🙂

Nodejs prematurely, Nodejs installation issues, Nodejs rollback

Solution M101JS: MongoDB for Node.js Developers

How to check if Customer or Admin is logged in the front page of Opencart 2 and 3?

This is opencart tips and tricks to check if Customer or Admin is logged in the front page of Opencart 2.3 and Opencart version 3. You can force login to customer. To check admin you should log in the same browser.

Force login for customer

Open catalog/controller/common/header.php

Find the index method: public function index() { then paste the following lines of code:

if ($this->request->get['route'] != "account/login") {
    if (!$this->customer->isLogged()) {
        $this->session->data['redirect'] = $this->url->link('common/home', '', true);
        $this->response->redirect($this->url->link('account/login', '', true));
    }
}

The above code check if route is login page or not and if it is not then it checks whether the customer is logged in or not, if not logged in then it redirects to login page. If the customer is logged in then it acts as normally.

Check whether Admin is logged in or not from the catalog or frontend

Now go to any controller and insert the code to check if user_id is set in the session. For example: Go to catalog/controller/common/header.php

Inside the index() method add the following code:

if($this->session->data['user_id']){
 echo 'Admin is logged in';
}else{
 echo 'Admin is not logged in';
}

Another way initialize the user object and check with isLogged() method

$loggeduser = new Cart\User($this->registry);
if($loggeduser->isLogged()){
 echo "Admin is in";
}else{
 echo "Admin not in";
}

This is how we can use Opencart library global objects methods.

Let us know if you find any difficulties or need any help from us. Likewise, you can see other Opencart tips and tricks and Opencart tutorial

Describe the relationship between sObjects and Salesforce records?

Describe the relationship between sObjects and Salesforce records.
A. The name of a sObject field in Apex is the label of the field in Salesforce.
B. A custom object’s API name and label are the same.
C. Every record in Salesforce is natively represented as a sObject in Apex.

Answer: C

You can obtain an instance of a sObject, such as Account, in one of the following ways:
A. By creating the sObject only.
B. Either by creating the sObject or by retrieving a persistent record from Salesforce using SOQL.
C. By retrieving the sObject only.  

Answer: C  

Which of the following is correct about a generic sObject variable?
A. A generic sObject variable can be assigned only to another generic sObject.
B. Generic sObjects can’t be created.
C. A generic sObject variable can be assigned to any specific sObject, standard or custom. Such as Account or Book__c.  

Answer: C

trailhead solution apex database sobjects

Uncaught exception ‘Exception’ with message ‘Error: Could not load model payment!’ in vqmod\vqcache\vq2-system_engine_loader.php

Uncaught exception ‘Exception’ with message ‘Error: Could not load model payment!’ in vqmod\vqcache\vq2-system_engine_loader.php or ‘Error: Could not load controller payment!’ or shipping or module then you have old folder existing in your folder so delete the old folder file which is at \catalog\model\payment or \catalog\model\shipping or \catalog\model\module. Once you delete that folder then hope it removes the opencart fatal error. DON’T FORGET TO KEEP BACKUP

Fatal error: Uncaught exception ‘Exception’ with message ‘Error: Could not load model payment!’ in vqmod\vqcache\-system_engine_loader.php on line 169
( ! ) Exception: Error: Could not load model payment! in vqmod\vqcache\vq2-system_engine_loader.php on line 169
Call Stack
# Time Memory Function Location
1 0.0000 135520 {main}( ) …\index.php:0
2 0.0150 755840 start( ) …\index.php:23
3 0.0150 781952 require_once( ‘system\framework.php’ ) …\vq2-system_startup.php:124
4 0.0450 1090320 Front->dispatch( ) …\framework.php:103
5 0.0825 1561336 Front->execute( ) …\front.php:29
6 0.0825 1561336 Action->execute( ) …\front.php:34
7 0.0825 1568880 call_user_func_array:{vqmod\vqcache\vq2-system_engine_action.php:51} ( ) …\vq2-system_engine_action.php:51
8 0.0825 1569112 ControllerStartupRouter->index( ) …\vq2-system_engine_action.php:51
9 0.0825 1569784 Action->execute( ) …\router.php:25
10 0.0850 1656912 call_user_func_array:{vqmod\vqcache\vq2-system_engine_action.php:51} ( ) …\vq2-system_engine_action.php:51
11 0.0850 1658328 ControllerQuickCheckoutPaymentMethod->index( ) …\vq2-system_engine_action.php:51
12 0.1500 1958272 getMethod ( ) …\payment_method.php:110
13 0.1500 1958520 Proxy->__call( ) …\payment_method.php:110
14 0.1500 1959200 call_user_func_array:{\system\engine\proxy.php:25} ( ) …\proxy.php:25
15 0.1500 1959976 Loader->{closure:vqmod\vqcache\vq2-system_engine_loader.php:147-191}( ) …\proxy.php:25

Just delete the folder by keeping the backup.

Hope it solve the problem. Happy Coding!!