Current Module
This commit is contained in:
@@ -0,0 +1,328 @@
|
||||
<?php
|
||||
/**
|
||||
* Module allow edit existing orders and set rules for automatically generating numbers for orders and other documents
|
||||
*
|
||||
* @author Keshva <keshvathakur47@gmail.com>
|
||||
* @copyright 2021 Keshva
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
*/
|
||||
|
||||
if (!defined('_PS_VERSION_')){
|
||||
exit;
|
||||
}
|
||||
|
||||
class DocumentReferences extends ObjectModel
|
||||
{
|
||||
public $id;
|
||||
public $id_document;
|
||||
public $document_type;
|
||||
public $reference;
|
||||
|
||||
public static $definition = array(
|
||||
'table' => 'document_references',
|
||||
'primary' => 'id_document_reference',
|
||||
'fields' => array(
|
||||
'id_document' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true, 'required' => true),
|
||||
'document_type' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'required' => true, 'size' => 32),
|
||||
'reference' => array('type' => self::TYPE_STRING, 'validate' => 'isAnything', 'size' => 255)
|
||||
)
|
||||
);
|
||||
|
||||
public static function addMissingReferences($idOrder = 0) {
|
||||
$ordersWithInvoices = Db::getInstance()->executeS("SELECT oi.id_order_invoice FROM "._DB_PREFIX_."order_invoice oi
|
||||
LEFT JOIN "._DB_PREFIX_."document_references dr on dr.id_document = oi.id_order_invoice AND dr.document_type = 'invoice'
|
||||
WHERE oi.number > 0 AND (dr.id_document is NULL || (dr.id_document is not NULL AND dr.document_type != 'invoice'))".($idOrder > 0 ? " AND oi.id_order = ". (int)$idOrder : ""));
|
||||
if (count($ordersWithInvoices) > 0)
|
||||
foreach ($ordersWithInvoices as $key => $value) {
|
||||
$orderInvoice = new OrderInvoice((int)$value['id_order_invoice']);
|
||||
$documentReference = new DocumentReferences();
|
||||
$documentReference->id_document = (int)$value['id_order_invoice'];
|
||||
$documentReference->document_type = 'invoice';
|
||||
$documentReference->reference = $orderInvoice->getInvoiceNumberFormatted(Context::getContext()->language->id, null, true);
|
||||
$documentReference->add();
|
||||
}
|
||||
$ordersWithDeliveryNumbers = Db::getInstance()->executeS("SELECT oi.id_order_invoice, oi.delivery_number FROM "._DB_PREFIX_."order_invoice oi
|
||||
LEFT JOIN "._DB_PREFIX_."document_references dr on dr.id_document = oi.id_order_invoice AND dr.document_type = 'delivery_slip'
|
||||
WHERE oi.delivery_number > 0 AND (dr.id_document is NULL || (dr.id_document is not NULL AND dr.document_type != 'delivery_slip'))".($idOrder > 0 ? " AND oi.id_order = ". (int)$idOrder : ""));
|
||||
if (count($ordersWithDeliveryNumbers) > 0)
|
||||
foreach ($ordersWithDeliveryNumbers as $key => $value) {
|
||||
$documentReference = new DocumentReferences();
|
||||
$documentReference->id_document = (int)$value['id_order_invoice'];
|
||||
$documentReference->document_type = 'delivery_slip';
|
||||
$documentReference->reference = Configuration::get('PS_DELIVERY_PREFIX', Context::getContext()->language->id, null, null).sprintf('%06d', $value['delivery_number']);
|
||||
$documentReference->add();
|
||||
}
|
||||
$creditSlips = Db::getInstance()->executeS("SELECT os.id_order_slip FROM "._DB_PREFIX_."order_slip os
|
||||
LEFT JOIN "._DB_PREFIX_."document_references dr on dr.id_document = os.id_order_slip AND dr.document_type = 'credit_slip'
|
||||
WHERE dr.id_document is NULL || (dr.id_document is not NULL AND dr.document_type != 'credit_slip')".($idOrder > 0 ? " AND os.id_order = ". (int)$idOrder : ""));
|
||||
if (count($creditSlips) > 0)
|
||||
foreach ($creditSlips as $key => $value) {
|
||||
$documentReference = new DocumentReferences();
|
||||
$documentReference->id_document = (int)$value['id_order_slip'];
|
||||
$documentReference->document_type = 'credit_slip';
|
||||
$documentReference->reference = sprintf(Translate::getPdfTranslation('%1$s%2$06d'), Configuration::get('PS_CREDIT_SLIP_PREFIX', Context::getContext()->language->id), (int)$value['id_order_slip']);
|
||||
$documentReference->add();
|
||||
}
|
||||
}
|
||||
|
||||
public static function storeReference($documentType, $idOrder = 0, $idDocument = 0)
|
||||
{
|
||||
$customNumberReferenceData = json_decode(Configuration::get('modrefchange'));
|
||||
if ($documentType == 'credit_slip') {
|
||||
$reference = self::getCustomOrderSlipReferenceNumber($customNumberReferenceData[3], $idOrder, $idDocument);
|
||||
} else if ($documentType == 'delivery_slip') {
|
||||
$reference = self::getCustomDeliverySlipReferenceNumber($customNumberReferenceData[2], $idOrder);
|
||||
} else if ($documentType == 'invoice') {
|
||||
if ($idDocument == 0) {
|
||||
$idDocument = self::getOrderInvoiceIdByOrderId($idOrder);
|
||||
}
|
||||
$reference = self::getCustomInvoiceReferenceNumber($customNumberReferenceData[1], $idOrder, $idDocument);
|
||||
} else { //$documentType == 'order'
|
||||
return self::getCustomOrderReferenceNumber($customNumberReferenceData[0]);
|
||||
}
|
||||
|
||||
$idDocumentReference = Db::getInstance()->getValue("SELECT id_document_reference
|
||||
FROM `"._DB_PREFIX_."document_references`
|
||||
WHERE `id_document` = ".(int)$idDocument." AND `document_type` = '".pSQL($documentType)."'");
|
||||
if ($idDocumentReference > 0) {
|
||||
Db::getInstance()->update('document_references', array('reference' => pSQL($reference)), '`id_document_reference` = '.(int)$idDocumentReference);
|
||||
} else {
|
||||
Db::getInstance()->insert('document_references', array('id_document' => (int)$idDocument, 'document_type' => pSQL($documentType), 'reference' => pSQL($reference)));
|
||||
}
|
||||
}
|
||||
|
||||
public static function getAllDocuments()
|
||||
{
|
||||
return Db::getInstance()->executeS("SELECT * FROM "._DB_PREFIX_."document_references");
|
||||
}
|
||||
|
||||
public static function getReference($idDocument, $documentType)
|
||||
{
|
||||
$sql = "SELECT * FROM "._DB_PREFIX_."document_references WHERE id_document = ".(int)$idDocument." AND document_type = '".pSQL($documentType)."'";
|
||||
return Db::getInstance()->getRow($sql);
|
||||
}
|
||||
|
||||
public static function getCustomOrderSlipReferenceNumber($customOrderSlipReferenceData, $order_id, $idDocument)
|
||||
{
|
||||
if ($customOrderSlipReferenceData->activate_reference_number) {
|
||||
$finalReference = $customOrderSlipReferenceData->reference_number_format;
|
||||
if (strpos($finalReference, '{COUNTER}') !== false)
|
||||
{
|
||||
self::checkForCounterReset(3);
|
||||
$getAllCounterData = json_decode(Configuration::getGlobalValue('counterNumberData'), true);
|
||||
$currentCounterData = $getAllCounterData[3];
|
||||
$finalReference = str_replace('{COUNTER}', self::getCounterValue($currentCounterData), $finalReference);
|
||||
$nextCounterValue = (int)$currentCounterData['counter_actual_value'] + (int)$currentCounterData['counter_increment_by'];
|
||||
$currentCounterData['counter_actual_value'] = $nextCounterValue;
|
||||
$getAllCounterData[3] = $currentCounterData;
|
||||
Configuration::updateGlobalValue('counterNumberData', json_encode($getAllCounterData));
|
||||
}
|
||||
$finalReference = str_replace('{RANDOM_NUMBER}', Tools::strtoupper(Tools::passwdGen($customOrderSlipReferenceData->random_number_length, 'NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHABETIC}', Tools::strtoupper(Tools::passwdGen($customOrderSlipReferenceData->random_alphabetic_length, 'NO_NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHANUMERIC}', Tools::strtoupper(Tools::passwdGen($customOrderSlipReferenceData->random_alphanumeric_length, 'ALPHANUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{ORDER_ID}', (int)$order_id, $finalReference);
|
||||
$finalReference = str_replace('{SHOP_ID}', (int)Context::getContext()->shop->id, $finalReference);
|
||||
$finalReference = str_replace('{YEAR}', date('Y'), $finalReference);
|
||||
$finalReference = str_replace('{YEARSHORTCUT}', date('y'), $finalReference);
|
||||
$finalReference = str_replace('{MONTH}', date('m'), $finalReference);
|
||||
$finalReference = str_replace('{WEEK}', date('W'), $finalReference);
|
||||
$finalReference = str_replace('{DAYINWEEK}', date('N'), $finalReference);
|
||||
$finalReference = str_replace('{DAY}', date('j'), $finalReference);
|
||||
return $finalReference;
|
||||
} else {
|
||||
return Configuration::get('PS_CREDIT_SLIP_PREFIX', Context::getContext()->language->id).sprintf('%06d', (int)$idDocument);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getCustomDeliverySlipReferenceNumber($customDeliverySlipReferenceData, $order_id)
|
||||
{
|
||||
if ($customDeliverySlipReferenceData->activate_reference_number) {
|
||||
$finalReference = $customDeliverySlipReferenceData->reference_number_format;
|
||||
if (strpos($finalReference, '{COUNTER}') !== false)
|
||||
{
|
||||
self::checkForCounterReset(2);
|
||||
$getAllCounterData = json_decode(Configuration::getGlobalValue('counterNumberData'), true);
|
||||
$currentCounterData = $getAllCounterData[2];
|
||||
$finalReference = str_replace('{COUNTER}', self::getCounterValue($currentCounterData), $finalReference);
|
||||
$nextCounterValue = (int)$currentCounterData['counter_actual_value'] + (int)$currentCounterData['counter_increment_by'];
|
||||
$currentCounterData['counter_actual_value'] = $nextCounterValue;
|
||||
$getAllCounterData[2] = $currentCounterData;
|
||||
Configuration::updateGlobalValue('counterNumberData', json_encode($getAllCounterData));
|
||||
}
|
||||
$finalReference = str_replace('{RANDOM_NUMBER}', Tools::strtoupper(Tools::passwdGen($customDeliverySlipReferenceData->random_number_length, 'NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHABETIC}', Tools::strtoupper(Tools::passwdGen($customDeliverySlipReferenceData->random_alphabetic_length, 'NO_NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHANUMERIC}', Tools::strtoupper(Tools::passwdGen($customDeliverySlipReferenceData->random_alphanumeric_length, 'ALPHANUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{ORDER_ID}', (int)$order_id, $finalReference);
|
||||
$finalReference = str_replace('{SHOP_ID}', (int)Context::getContext()->shop->id, $finalReference);
|
||||
$finalReference = str_replace('{YEAR}', date('Y'), $finalReference);
|
||||
$finalReference = str_replace('{YEARSHORTCUT}', date('y'), $finalReference);
|
||||
$finalReference = str_replace('{MONTH}', date('m'), $finalReference);
|
||||
$finalReference = str_replace('{WEEK}', date('W'), $finalReference);
|
||||
$finalReference = str_replace('{DAYINWEEK}', date('N'), $finalReference);
|
||||
$finalReference = str_replace('{DAY}', date('j'), $finalReference);
|
||||
return $finalReference;
|
||||
} else {
|
||||
$order = new Order($order_id);
|
||||
return Configuration::get('PS_DELIVERY_PREFIX', Context::getContext()->language->id, null, Context::getContext()->shop->id).sprintf('%06d', $order->delivery_number);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getCustomInvoiceReferenceNumber($customInvoiceReferenceData, $order_id, $idDocument)
|
||||
{
|
||||
if ($customInvoiceReferenceData->activate_reference_number) {
|
||||
$finalReference = $customInvoiceReferenceData->reference_number_format;
|
||||
if (strpos($finalReference, '{COUNTER}') !== false)
|
||||
{
|
||||
self::checkForCounterReset(1);
|
||||
$getAllCounterData = json_decode(Configuration::getGlobalValue('counterNumberData'), true);
|
||||
$currentCounterData = $getAllCounterData[1];
|
||||
$finalReference = str_replace('{COUNTER}', self::getCounterValue($currentCounterData), $finalReference);
|
||||
$nextCounterValue = (int)$currentCounterData['counter_actual_value'] + (int)$currentCounterData['counter_increment_by'];
|
||||
$currentCounterData['counter_actual_value'] = $nextCounterValue;
|
||||
$getAllCounterData[1] = $currentCounterData;
|
||||
Configuration::updateGlobalValue('counterNumberData', json_encode($getAllCounterData));
|
||||
}
|
||||
$finalReference = str_replace('{RANDOM_NUMBER}', Tools::strtoupper(Tools::passwdGen($customInvoiceReferenceData->random_number_length, 'NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHABETIC}', Tools::strtoupper(Tools::passwdGen($customInvoiceReferenceData->random_alphabetic_length, 'NO_NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHANUMERIC}', Tools::strtoupper(Tools::passwdGen($customInvoiceReferenceData->random_alphanumeric_length, 'ALPHANUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{ORDER_ID}', (int)$order_id, $finalReference);
|
||||
$finalReference = str_replace('{SHOP_ID}', (int)Context::getContext()->shop->id, $finalReference);
|
||||
$finalReference = str_replace('{YEAR}', date('Y'), $finalReference);
|
||||
$finalReference = str_replace('{YEARSHORTCUT}', date('y'), $finalReference);
|
||||
$finalReference = str_replace('{MONTH}', date('m'), $finalReference);
|
||||
$finalReference = str_replace('{WEEK}', date('W'), $finalReference);
|
||||
$finalReference = str_replace('{DAYINWEEK}', date('N'), $finalReference);
|
||||
$finalReference = str_replace('{DAY}', date('j'), $finalReference);
|
||||
return $finalReference;
|
||||
} else {
|
||||
$orderInvoice = new OrderInvoice($idDocument);
|
||||
return $orderInvoice->getInvoiceNumberFormatted(Context::getContext()->language->id, Context::getContext()->shop->id, true);
|
||||
}
|
||||
}
|
||||
|
||||
public static function getCustomOrderReferenceNumber($customOrderReferenceData)
|
||||
{
|
||||
if ($customOrderReferenceData->activate_reference_number)
|
||||
{
|
||||
$finalReference = $customOrderReferenceData->reference_number_format;
|
||||
if (strpos($finalReference, '{COUNTER}') !== false)
|
||||
{
|
||||
self::checkForCounterReset(0);
|
||||
$getAllCounterData = json_decode(Configuration::getGlobalValue('counterNumberData'), true);
|
||||
$currentCounterData = $getAllCounterData[0];
|
||||
$finalReference = str_replace('{COUNTER}', self::getCounterValue($currentCounterData), $finalReference);
|
||||
$nextCounterValue = (int)$currentCounterData['counter_actual_value'] + (int)$currentCounterData['counter_increment_by'];
|
||||
$currentCounterData['counter_actual_value'] = $nextCounterValue;
|
||||
$getAllCounterData[0] = $currentCounterData;
|
||||
Configuration::updateGlobalValue('counterNumberData', json_encode($getAllCounterData));
|
||||
}
|
||||
$finalReference = str_replace('{RANDOM_NUMBER}', Tools::strtoupper(Tools::passwdGen($customOrderReferenceData->random_number_length, 'NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHABETIC}', Tools::strtoupper(Tools::passwdGen($customOrderReferenceData->random_alphabetic_length, 'NO_NUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{RANDOM_ALPHANUMERIC}', Tools::strtoupper(Tools::passwdGen($customOrderReferenceData->random_alphanumeric_length, 'ALPHANUMERIC')), $finalReference);
|
||||
$finalReference = str_replace('{ORDER_ID}', (int)self::getLastOrderId() + 1, $finalReference);
|
||||
$finalReference = str_replace('{SHOP_ID}', (int)Context::getContext()->shop->id, $finalReference);
|
||||
$finalReference = str_replace('{YEAR}', date('Y'), $finalReference);
|
||||
$finalReference = str_replace('{YEARSHORTCUT}', date('y'), $finalReference);
|
||||
$finalReference = str_replace('{MONTH}', date('m'), $finalReference);
|
||||
$finalReference = str_replace('{WEEK}', date('W'), $finalReference);
|
||||
$finalReference = str_replace('{DAYINWEEK}', date('N'), $finalReference);
|
||||
$finalReference = str_replace('{DAY}', date('j'), $finalReference);
|
||||
return $finalReference;
|
||||
}
|
||||
else
|
||||
return Tools::strtoupper(Tools::passwdGen(9, 'NO_NUMERIC'));
|
||||
}
|
||||
|
||||
// tato metoda sa vola len pri prvom generovani faktury -> Order->setInvoice()
|
||||
// vtedy este nemoze byt viac zaznamov v tabulke order_invoice
|
||||
public static function getOrderInvoiceIdByOrderId($orderId)
|
||||
{
|
||||
$sql = 'SELECT id_order_invoice FROM '._DB_PREFIX_.'order_invoice WHERE id_order = '.(int)$orderId;
|
||||
if ($row = Db::getInstance()->getRow($sql))
|
||||
return $row['id_order_invoice'];
|
||||
}
|
||||
|
||||
public static function getLastOrderId()
|
||||
{
|
||||
$sql = 'SELECT MAX(id_order) as lastId FROM '._DB_PREFIX_.'orders';
|
||||
if ($row = Db::getInstance()->getRow($sql))
|
||||
return $row['lastId'];
|
||||
}
|
||||
|
||||
public static function orderInvoiceRecordsCountByOrderID($orderId)
|
||||
{
|
||||
return (int)Db::getInstance()->getValue('SELECT COUNT(id_order_invoice)
|
||||
FROM `'._DB_PREFIX_.'order_invoice`
|
||||
WHERE `id_order` = '.(int)$orderId);
|
||||
}
|
||||
|
||||
public static function checkForCounterReset($type)
|
||||
{
|
||||
$counterData = json_decode(Configuration::getGlobalValue('counterNumberData'), true);
|
||||
$currentCounterData = $counterData[$type];
|
||||
$today = date("Y-m-d");
|
||||
if ((int)$currentCounterData['counter_reset_interval'] == 0) //reset tyzdna
|
||||
{
|
||||
if (strtotime($currentCounterData['counter_last_set_date']) < strtotime($today)
|
||||
&& (((int)date("W", strtotime($currentCounterData['counter_last_set_date'])) != (int)date("W", strtotime($today)))
|
||||
|| (((int)date("W", strtotime($currentCounterData['counter_last_set_date'])) == (int)date("W", strtotime($today))) && ((int)date("Y", strtotime($currentCounterData['counter_last_set_date'])) < (int)date("Y", strtotime($today))))
|
||||
))
|
||||
{
|
||||
$currentCounterData['counter_actual_value'] = $currentCounterData['counter_start_at'];
|
||||
}
|
||||
}
|
||||
else if ((int)$currentCounterData['counter_reset_interval'] == 1) //reset mesiaca
|
||||
{
|
||||
if (strtotime($currentCounterData['counter_last_set_date']) < strtotime($today)
|
||||
&& (((int)date("n", strtotime($currentCounterData['counter_last_set_date'])) != (int)date("n", strtotime($today)))
|
||||
|| (((int)date("n", strtotime($currentCounterData['counter_last_set_date'])) == (int)date("n", strtotime($today))) && ((int)date("Y", strtotime($currentCounterData['counter_last_set_date'])) < (int)date("Y", strtotime($today))))
|
||||
))
|
||||
{
|
||||
$currentCounterData['counter_actual_value'] = $currentCounterData['counter_start_at'];
|
||||
}
|
||||
}
|
||||
else if ((int)$currentCounterData['counter_reset_interval'] == 2) //reset roka
|
||||
{
|
||||
if (strtotime($currentCounterData['counter_last_set_date']) < strtotime($today)
|
||||
&& ((int)date("Y", strtotime($currentCounterData['counter_last_set_date'])) < (int)date("Y", strtotime($today))))
|
||||
{
|
||||
$currentCounterData['counter_actual_value'] = $currentCounterData['counter_start_at'];
|
||||
}
|
||||
}
|
||||
else if ((int)$currentCounterData['counter_reset_interval'] == 3){ //reset podla cisla
|
||||
if ((int)$currentCounterData['counter_actual_value'] > $currentCounterData['counter_reset_number']) {
|
||||
$currentCounterData['counter_actual_value'] = $currentCounterData['counter_start_at'];
|
||||
}
|
||||
}
|
||||
else if ((int)$currentCounterData['counter_reset_interval'] == 4) //reset podla datumu
|
||||
{
|
||||
if (strtotime($currentCounterData['counter_last_set_date']) < strtotime($today)
|
||||
&& strtotime($currentCounterData['counter_reset_date']) <= strtotime($today)
|
||||
&& $currentCounterData['counter_reset_date'] != '')
|
||||
{
|
||||
$currentCounterData['counter_actual_value'] = $currentCounterData['counter_start_at'];
|
||||
$currentCounterData['counter_reset_date'] = '';
|
||||
}
|
||||
}
|
||||
$currentCounterData['counter_last_set_date'] = $today;
|
||||
$counterData[$type] = $currentCounterData;
|
||||
Configuration::updateGlobalValue('counterNumberData', json_encode($counterData));
|
||||
}
|
||||
|
||||
public static function getCounterValue($currentCounterData)
|
||||
{
|
||||
$nextCounterValue = '';
|
||||
if ((int)$currentCounterData['counter_reference_length_in_use'] == 1)
|
||||
{
|
||||
if ((int)$currentCounterData['counter_reference_length'] > Tools::strlen((string)$currentCounterData['counter_actual_value']))
|
||||
{
|
||||
for ($i = 0; $i < (int)$currentCounterData['counter_reference_length'] - Tools::strlen((string)$currentCounterData['counter_actual_value']); $i++)
|
||||
{
|
||||
$nextCounterValue .= "0";
|
||||
}
|
||||
}
|
||||
}
|
||||
$nextCounterValue .= $currentCounterData['counter_actual_value'];
|
||||
return $nextCounterValue;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
<?php
|
||||
/*
|
||||
* 2007-2014 PrestaShop
|
||||
*
|
||||
* NOTICE OF LICENSE
|
||||
*
|
||||
* This source file is subject to the Academic Free License (AFL 3.0)
|
||||
* that is bundled with this package in the file LICENSE.txt.
|
||||
* It is also available through the world-wide-web at this URL:
|
||||
* http://opensource.org/licenses/afl-3.0.php
|
||||
* If you did not receive a copy of the license and are unable to
|
||||
* obtain it through the world-wide-web, please send an email
|
||||
* to license@prestashop.com so we can send you a copy immediately.
|
||||
*
|
||||
* DISCLAIMER
|
||||
*
|
||||
* Do not edit or add to this file if you wish to upgrade PrestaShop to newer
|
||||
* versions in the future. If you wish to customize PrestaShop for your
|
||||
* needs please refer to http://www.prestashop.com for more information.
|
||||
*
|
||||
* @author PrestaShop SA <contact@prestashop.com>
|
||||
* @copyright 2007-2014 PrestaShop SA
|
||||
* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)
|
||||
* International Registered Trademark & Property of PrestaShop SA
|
||||
*/
|
||||
|
||||
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
|
||||
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
|
||||
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate');
|
||||
header('Cache-Control: post-check=0, pre-check=0', false);
|
||||
header('Pragma: no-cache');
|
||||
|
||||
header('Location: ../');
|
||||
exit;
|
||||
Reference in New Issue
Block a user