Merge branch 'evo-philea-Destock' into develop
This commit is contained in:
commit
fee10ec7af
@ -16,6 +16,7 @@ class HelperFormBootstrap{
|
|||||||
public $_select2;
|
public $_select2;
|
||||||
public $_inputMask;
|
public $_inputMask;
|
||||||
public $_inputSwitch;
|
public $_inputSwitch;
|
||||||
|
public $_inputWizard;
|
||||||
public $_inputTag;
|
public $_inputTag;
|
||||||
public $_dateTime;
|
public $_dateTime;
|
||||||
|
|
||||||
@ -30,6 +31,7 @@ class HelperFormBootstrap{
|
|||||||
$this->_select2 = false;
|
$this->_select2 = false;
|
||||||
$this->_inputMask = false;
|
$this->_inputMask = false;
|
||||||
$this->_inputSwitch = false;
|
$this->_inputSwitch = false;
|
||||||
|
$this->_inputWizard = false;
|
||||||
$this->_inputTag = false;
|
$this->_inputTag = false;
|
||||||
$this->_dateTime = false;
|
$this->_dateTime = false;
|
||||||
}
|
}
|
||||||
@ -63,6 +65,9 @@ class HelperFormBootstrap{
|
|||||||
if ($this->_inputSwitch) {
|
if ($this->_inputSwitch) {
|
||||||
$this->_script .= '<script type="text/javascript" src="'.__PS_BASE_URI__.'adm/helpers/includes/switchery.min.js"></script>';
|
$this->_script .= '<script type="text/javascript" src="'.__PS_BASE_URI__.'adm/helpers/includes/switchery.min.js"></script>';
|
||||||
}
|
}
|
||||||
|
if ($this->_inputWizard) {
|
||||||
|
$this->_script .= '<script type="text/javascript" src="'.__PS_BASE_URI__.'adm/helpers/includes/jquery.smartWizard.js"></script>';
|
||||||
|
}
|
||||||
$this->_script .= '<script type="text/javascript" src="'.__PS_BASE_URI__.'adm/helpers/includes/js/custom.js"></script>';
|
$this->_script .= '<script type="text/javascript" src="'.__PS_BASE_URI__.'adm/helpers/includes/js/custom.js"></script>';
|
||||||
$this->_script .= $this->_js;
|
$this->_script .= $this->_js;
|
||||||
return $this->_script;
|
return $this->_script;
|
||||||
@ -584,13 +589,21 @@ class HelperFormBootstrap{
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public function inputButton($p = array()){
|
public function inputButtonLink($p = array()){
|
||||||
$css = isset($p['css']) && $p['css'] ? $p['css'] : false;
|
$css = isset($p['css']) && $p['css'] ? $p['css'] : false;
|
||||||
$class = isset($p['css']) && $p['css'] ? $p['css'] : false;
|
$class = isset($p['css']) && $p['css'] ? $p['css'] : false;
|
||||||
$this->_html .= '
|
$this->_html .= '
|
||||||
<a '.($css ? 'style="'.$css.'"' : '').' href="'.$p['action'].'" class="button" name="'.$p['name'].'">'.$p['label'].'</a>
|
<a '.($css ? 'style="'.$css.'"' : '').' href="'.$p['action'].'" class="button" name="'.$p['name'].'">'.$p['label'].'</a>
|
||||||
';
|
';
|
||||||
}
|
}
|
||||||
|
public function inputButton($p = array()){
|
||||||
|
$label = isset($p['label']) && $p['label'] ? $p['label'] : false;
|
||||||
|
$css = isset($p['css']) && $p['css'] ? $p['css'] : false;
|
||||||
|
$class = isset($p['class']) && $p['class'] ? $p['class'] : false;
|
||||||
|
$this->_html .= '
|
||||||
|
<button '.($css ? 'style="'.$css.'"' : '').' type="submit" class="btn '.($class ? $class : '').'" name="'.$p['name'].'">'.$p['value'].'</button>
|
||||||
|
';
|
||||||
|
}
|
||||||
public function inputSubmit($p = array()){
|
public function inputSubmit($p = array()){
|
||||||
$label = isset($p['label']) && $p['label'] ? $p['label'] : false;
|
$label = isset($p['label']) && $p['label'] ? $p['label'] : false;
|
||||||
$css = isset($p['css']) && $p['css'] ? $p['css'] : false;
|
$css = isset($p['css']) && $p['css'] ? $p['css'] : false;
|
||||||
|
@ -36,27 +36,53 @@ ul#menu li a {
|
|||||||
.row {
|
.row {
|
||||||
background: none;
|
background: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* button */
|
||||||
|
a, a:hover{
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a,
|
||||||
|
a:visited,
|
||||||
|
a:focus,
|
||||||
|
a:active,
|
||||||
|
:visited,
|
||||||
|
:focus,
|
||||||
|
:active,
|
||||||
|
.btn:focus,
|
||||||
|
.btn:active:focus,
|
||||||
|
.btn.active:focus,
|
||||||
|
.btn.focus,
|
||||||
|
.btn:active.focus,
|
||||||
|
.btn.active.focus{
|
||||||
|
outline: 0;
|
||||||
|
}
|
||||||
.btn-primary {
|
.btn-primary {
|
||||||
background: #504d8b;
|
background: #504d8b;
|
||||||
border-color: #504d8b;
|
border-color: #504d8b;}
|
||||||
}
|
|
||||||
.btn-primary:hover {
|
.btn-primary:hover {
|
||||||
background: #796dc7;
|
background: #796dc7;
|
||||||
border-color: #796dc7;
|
border-color: #796dc7;}
|
||||||
}
|
|
||||||
.btn-primary.active,
|
.btn-primary.active,
|
||||||
.btn-primary:active,
|
.btn-primary:active,
|
||||||
.open>.dropdown-toggle.btn-primary {
|
.open .dropdown-toggle.btn-primary {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: #796dc7;
|
background: #796dc7;
|
||||||
border-color: #796dc7;
|
border-color: #796dc7;}
|
||||||
}
|
|
||||||
.btn-primary.focus,
|
.btn-primary.focus,
|
||||||
.btn-primary:focus {
|
.btn-primary:focus {
|
||||||
color: #fff;
|
color: #fff;
|
||||||
background: #504d8b;
|
background: #504d8b;
|
||||||
border-color: #504d8b;
|
border-color: #504d8b;}
|
||||||
}
|
|
||||||
|
.btn-success {
|
||||||
|
background: #26B99A;
|
||||||
|
border: 1px solid #169F85;}
|
||||||
|
.btn-success:hover,
|
||||||
|
.btn-success:focus,
|
||||||
|
.btn-success:active,
|
||||||
|
.btn-success.active,
|
||||||
|
.open .dropdown-toggle.btn-success {
|
||||||
|
background: #169F85;}
|
||||||
|
|
||||||
h2 {
|
h2 {
|
||||||
font-size: 18px;
|
font-size: 18px;
|
||||||
@ -80,7 +106,6 @@ form label{
|
|||||||
/*background: rgba(86,84,133,1);
|
/*background: rgba(86,84,133,1);
|
||||||
color: #fff;*/
|
color: #fff;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
.panel {
|
.panel {
|
||||||
position: relative;
|
position: relative;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
@ -123,6 +148,16 @@ form label{
|
|||||||
.panel-title h2 small {
|
.panel-title h2 small {
|
||||||
margin-left: 10px;
|
margin-left: 10px;
|
||||||
}
|
}
|
||||||
|
.navbar-right {margin-right:-5px;}
|
||||||
|
.panel-toolbox>li>a {
|
||||||
|
cursor: pointer;
|
||||||
|
padding: 8px;
|
||||||
|
color: #C5C7CB;
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
.panel-toolbox>li>a:hover {
|
||||||
|
background: #F5F7FA;
|
||||||
|
}
|
||||||
.panel-content {
|
.panel-content {
|
||||||
padding: 0 5px;
|
padding: 0 5px;
|
||||||
position: relative;
|
position: relative;
|
||||||
@ -184,11 +219,35 @@ div.tagsinput span.tag a {
|
|||||||
border: 1px solid transparent;
|
border: 1px solid transparent;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
#content .alert-custom {
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
|
#content .alert-custom span.text-alert{
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
width: calc(100% - 55px);
|
||||||
|
}
|
||||||
|
#content .alert-custom i.glyphicon,
|
||||||
|
#content .alert-custom span.glyphicon,
|
||||||
|
#content .alert-custom i.anticon,
|
||||||
|
#content .alert-custom span.anticon{
|
||||||
|
display: inline-block;
|
||||||
|
margin-right: 5px;
|
||||||
|
vertical-align: middle;
|
||||||
|
font-size: 45px;
|
||||||
|
opacity: 0.3;
|
||||||
|
}
|
||||||
#content .alert-success {
|
#content .alert-success {
|
||||||
color: #3c763d;
|
color: #3c763d;
|
||||||
background-color: #dff0d8;
|
background-color: #dff0d8;
|
||||||
border-color: #d6e9c6;
|
border-color: #d6e9c6;
|
||||||
}
|
}
|
||||||
|
#content .alert-ok{
|
||||||
|
color: #fff;
|
||||||
|
background-color: #1ABB9C;
|
||||||
|
border: 1px solid #169F85;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* form */
|
/* form */
|
||||||
.form-control {
|
.form-control {
|
||||||
@ -246,6 +305,9 @@ table.table tr th {
|
|||||||
background: #504d8b;
|
background: #504d8b;
|
||||||
color: #fff;
|
color: #fff;
|
||||||
}
|
}
|
||||||
|
.table tr td {
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
/* Select2 */
|
/* Select2 */
|
||||||
.select2-results ul li{
|
.select2-results ul li{
|
||||||
@ -254,4 +316,90 @@ table.table tr th {
|
|||||||
.select2-container--default .select2-results__option--highlighted[aria-selected] {
|
.select2-container--default .select2-results__option--highlighted[aria-selected] {
|
||||||
background-color: #504d8b;
|
background-color: #504d8b;
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Smart Wizar */
|
||||||
|
.form_wizard .stepContainer {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
border: 0 solid #CCC;
|
||||||
|
overflow-x: hidden; }
|
||||||
|
.wizard_horizontal ul.wizard_steps {
|
||||||
|
display: table;
|
||||||
|
list-style: none;
|
||||||
|
position: relative;
|
||||||
|
width: 100%;
|
||||||
|
margin: 0 0 20px;
|
||||||
|
padding:0; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li {
|
||||||
|
display: table-cell;
|
||||||
|
text-align: center; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li a,
|
||||||
|
.wizard_horizontal ul.wizard_steps li:hover {
|
||||||
|
display: block;
|
||||||
|
position: relative;
|
||||||
|
-moz-opacity: 1;
|
||||||
|
filter: alpha(opacity=100);
|
||||||
|
opacity: 1;
|
||||||
|
color: #666; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li a:before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
height: 4px;
|
||||||
|
background: #ccc;
|
||||||
|
top: 20px;
|
||||||
|
width: 100%;
|
||||||
|
z-index: 4;
|
||||||
|
left: 0; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li a.disabled .step_no {
|
||||||
|
background: #ccc; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li a .step_no {
|
||||||
|
width: 40px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
border-radius: 100px;
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto 5px;
|
||||||
|
font-size: 16px;
|
||||||
|
text-align: center;
|
||||||
|
position: relative;
|
||||||
|
z-index: 5; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li a.selected:before,
|
||||||
|
.step_no {
|
||||||
|
background: #504d8b;
|
||||||
|
color: #fff; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li a.done:before,
|
||||||
|
.wizard_horizontal ul.wizard_steps li a.done .step_no {
|
||||||
|
background: #1ABB9C;
|
||||||
|
color: #fff; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li:first-child a:before {
|
||||||
|
left: 50%; }
|
||||||
|
.wizard_horizontal ul.wizard_steps li:last-child a:before {
|
||||||
|
right: 50%;
|
||||||
|
width: 50%;
|
||||||
|
left: auto; }
|
||||||
|
.form_wizard h2.StepTitle{
|
||||||
|
text-align:center;
|
||||||
|
color: #504d8b;
|
||||||
|
text-transform: uppercase;
|
||||||
|
}
|
||||||
|
.actionBar {
|
||||||
|
width: 100%;
|
||||||
|
border-top: 1px solid #ddd;
|
||||||
|
padding: 10px 5px;
|
||||||
|
text-align: right;
|
||||||
|
margin-top: 10px; }
|
||||||
|
.actionBar .buttonDisabled {
|
||||||
|
cursor: not-allowed;
|
||||||
|
pointer-events: none;
|
||||||
|
opacity: .65;
|
||||||
|
filter: alpha(opacity=65);
|
||||||
|
box-shadow: none; }
|
||||||
|
.actionBar a {
|
||||||
|
margin: 0 3px; }
|
||||||
|
.form_wizard .loader {
|
||||||
|
display: none; }
|
||||||
|
.form_wizard .msgBox {
|
||||||
|
display: none; }
|
459
adm/helpers/includes/jquery.smartWizard.js
Executable file
459
adm/helpers/includes/jquery.smartWizard.js
Executable file
@ -0,0 +1,459 @@
|
|||||||
|
/*
|
||||||
|
* SmartWizard 3.3.1 plugin
|
||||||
|
* jQuery Wizard control Plugin
|
||||||
|
* by Dipu
|
||||||
|
*
|
||||||
|
* Refactored and extended:
|
||||||
|
* https://github.com/mstratman/jQuery-Smart-Wizard
|
||||||
|
*
|
||||||
|
* Original URLs:
|
||||||
|
* http://www.techlaboratory.net
|
||||||
|
* http://tech-laboratory.blogspot.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
function SmartWizard(target, options) {
|
||||||
|
this.target = target;
|
||||||
|
this.options = options;
|
||||||
|
this.curStepIdx = options.selected;
|
||||||
|
this.steps = $(target).children("ul").children("li").children("a"); // Get all anchors
|
||||||
|
this.contentWidth = 0;
|
||||||
|
this.msgBox = $('<div class="msgBox"><div class="content"></div><a href="#" class="close">X</a></div>');
|
||||||
|
this.elmStepContainer = $('<div></div>').addClass("stepContainer");
|
||||||
|
this.loader = $('<div class="text-center"><img src="../img/loader_payment.gif" /></div>').addClass("loader");
|
||||||
|
this.buttons = {
|
||||||
|
next : $('<a>'+options.labelNext+'</a>').attr("href","#").addClass("buttonNext btn btn-primary"),
|
||||||
|
previous : $('<a>'+options.labelPrevious+'</a>').attr("href","#").addClass("buttonPrevious btn btn-success"),
|
||||||
|
finish : $('<a>'+options.labelFinish+'</a>').attr("href","#").addClass("buttonFinish btn btn-default")
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Private functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
var _init = function($this) {
|
||||||
|
var elmActionBar = $('<div></div>').addClass("actionBar");
|
||||||
|
elmActionBar.append($this.msgBox);
|
||||||
|
$('.close',$this.msgBox).click(function() {
|
||||||
|
$this.msgBox.fadeOut("normal");
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
var allDivs = $this.target.children('div');
|
||||||
|
$this.target.children('ul').addClass("anchor");
|
||||||
|
allDivs.addClass("content");
|
||||||
|
|
||||||
|
// highlight steps with errors
|
||||||
|
if($this.options.errorSteps && $this.options.errorSteps.length>0){
|
||||||
|
$.each($this.options.errorSteps, function(i, n){
|
||||||
|
$this.setError({ stepnum: n, iserror:true });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
$this.elmStepContainer.append(allDivs).append($this.loader);
|
||||||
|
$this.target.append($this.elmStepContainer);
|
||||||
|
elmActionBar.append($this.buttons.previous)
|
||||||
|
.append($this.buttons.next)
|
||||||
|
.append($this.buttons.finish);
|
||||||
|
$this.target.append(elmActionBar);
|
||||||
|
this.contentWidth = $this.elmStepContainer.width();
|
||||||
|
|
||||||
|
$($this.buttons.next).click(function() {
|
||||||
|
$this.goForward();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$($this.buttons.previous).click(function() {
|
||||||
|
$this.goBackward();
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$($this.buttons.finish).click(function() {
|
||||||
|
if(!$(this).hasClass('buttonDisabled')){
|
||||||
|
if($.isFunction($this.options.onFinish)) {
|
||||||
|
var context = { fromStep: $this.curStepIdx + 1 };
|
||||||
|
if(!$this.options.onFinish.call(this,$($this.steps), context)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
var frm = $this.target.parents('form');
|
||||||
|
if(frm && frm.length){
|
||||||
|
frm.submit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
$($this.steps).bind("click", function(e){
|
||||||
|
if($this.steps.index(this) == $this.curStepIdx){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var nextStepIdx = $this.steps.index(this);
|
||||||
|
var isDone = $this.steps.eq(nextStepIdx).attr("isDone") - 0;
|
||||||
|
if(isDone == 1){
|
||||||
|
_loadContent($this, nextStepIdx);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Enable keyboard navigation
|
||||||
|
if($this.options.keyNavigation){
|
||||||
|
$(document).keyup(function(e){
|
||||||
|
if(e.which==39){ // Right Arrow
|
||||||
|
$this.goForward();
|
||||||
|
}else if(e.which==37){ // Left Arrow
|
||||||
|
$this.goBackward();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// Prepare the steps
|
||||||
|
_prepareSteps($this);
|
||||||
|
// Show the first selected step
|
||||||
|
_loadContent($this, $this.curStepIdx);
|
||||||
|
};
|
||||||
|
|
||||||
|
var _prepareSteps = function($this) {
|
||||||
|
if(! $this.options.enableAllSteps){
|
||||||
|
$($this.steps, $this.target).removeClass("selected").removeClass("done").addClass("disabled");
|
||||||
|
$($this.steps, $this.target).attr("isDone",0);
|
||||||
|
}else{
|
||||||
|
$($this.steps, $this.target).removeClass("selected").removeClass("disabled").addClass("done");
|
||||||
|
$($this.steps, $this.target).attr("isDone",1);
|
||||||
|
}
|
||||||
|
|
||||||
|
$($this.steps, $this.target).each(function(i){
|
||||||
|
$($(this).attr("href").replace(/^.+#/, '#'), $this.target).hide();
|
||||||
|
$(this).attr("rel",i+1);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
var _step = function ($this, selStep) {
|
||||||
|
return $(
|
||||||
|
$(selStep, $this.target).attr("href").replace(/^.+#/, '#'),
|
||||||
|
$this.target
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
var _loadContent = function($this, stepIdx) {
|
||||||
|
var curStep = $this.steps.eq($this.curStepIdx);
|
||||||
|
if(stepIdx != $this.curStepIdx){
|
||||||
|
if($.isFunction($this.options.beforeLoadContent)) {
|
||||||
|
var context = { fromStep: $this.curStepIdx+1, toStep: stepIdx+1 };
|
||||||
|
if (! $this.options.beforeLoadContent.call($this,$(curStep), context)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var selStep = $this.steps.eq(stepIdx);
|
||||||
|
var ajaxurl = $this.options.contentURL;
|
||||||
|
var ajaxurl_data = $this.options.contentURLData;
|
||||||
|
var hasContent = selStep.data('hasContent');
|
||||||
|
var stepNum = stepIdx+1;
|
||||||
|
$this.options.ajaxData.step_number = stepNum;
|
||||||
|
var datas = $this.options.ajaxData;
|
||||||
|
if (ajaxurl && ajaxurl.length>0) {
|
||||||
|
if ($this.options.contentCache && hasContent) {
|
||||||
|
_showStep($this, stepIdx);
|
||||||
|
} else {
|
||||||
|
var ajax_args = {
|
||||||
|
url: ajaxurl,
|
||||||
|
type: "POST",
|
||||||
|
data: datas,
|
||||||
|
dataType: "text",
|
||||||
|
beforeSend: function(){
|
||||||
|
$this.loader.show();
|
||||||
|
},
|
||||||
|
error: function(){
|
||||||
|
$this.loader.hide();
|
||||||
|
},
|
||||||
|
success: function(res){
|
||||||
|
$this.loader.hide();
|
||||||
|
if(res && res.length>0){
|
||||||
|
selStep.data('hasContent',true);
|
||||||
|
_step($this, selStep).html(res);
|
||||||
|
_showStep($this, stepIdx);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if (ajaxurl_data) {
|
||||||
|
ajax_args = $.extend(ajax_args, ajaxurl_data(stepNum));
|
||||||
|
}
|
||||||
|
$.ajax(ajax_args);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
_showStep($this,stepIdx);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var _showStep = function($this, stepIdx) {
|
||||||
|
var selStep = $this.steps.eq(stepIdx);
|
||||||
|
var curStep = $this.steps.eq($this.curStepIdx);
|
||||||
|
if(stepIdx != $this.curStepIdx){
|
||||||
|
if($.isFunction($this.options.onLeaveStep)) {
|
||||||
|
var context = { fromStep: $this.curStepIdx+1, toStep: stepIdx+1 };
|
||||||
|
if (! $this.options.onLeaveStep.call($this,$(curStep), context)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this.elmStepContainer.height(_step($this, selStep).outerHeight());
|
||||||
|
var prevCurStepIdx = $this.curStepIdx;
|
||||||
|
$this.curStepIdx = stepIdx;
|
||||||
|
if ($this.options.transitionEffect == 'slide'){
|
||||||
|
_step($this, curStep).slideUp("fast",function(e){
|
||||||
|
_step($this, selStep).slideDown("fast");
|
||||||
|
_setupStep($this,curStep,selStep);
|
||||||
|
});
|
||||||
|
} else if ($this.options.transitionEffect == 'fade'){
|
||||||
|
_step($this, curStep).fadeOut("fast",function(e){
|
||||||
|
_step($this, selStep).fadeIn("fast");
|
||||||
|
_setupStep($this,curStep,selStep);
|
||||||
|
});
|
||||||
|
} else if ($this.options.transitionEffect == 'slideleft'){
|
||||||
|
var nextElmLeft = 0;
|
||||||
|
var nextElmLeft1 = null;
|
||||||
|
var nextElmLeft = null;
|
||||||
|
var curElementLeft = 0;
|
||||||
|
if(stepIdx > prevCurStepIdx){
|
||||||
|
nextElmLeft1 = $this.contentWidth + 10;
|
||||||
|
nextElmLeft2 = 0;
|
||||||
|
curElementLeft = 0 - _step($this, curStep).outerWidth();
|
||||||
|
} else {
|
||||||
|
nextElmLeft1 = 0 - _step($this, selStep).outerWidth() + 20;
|
||||||
|
nextElmLeft2 = 0;
|
||||||
|
curElementLeft = 10 + _step($this, curStep).outerWidth();
|
||||||
|
}
|
||||||
|
if (stepIdx == prevCurStepIdx) {
|
||||||
|
nextElmLeft1 = $($(selStep, $this.target).attr("href"), $this.target).outerWidth() + 20;
|
||||||
|
nextElmLeft2 = 0;
|
||||||
|
curElementLeft = 0 - $($(curStep, $this.target).attr("href"), $this.target).outerWidth();
|
||||||
|
} else {
|
||||||
|
$($(curStep, $this.target).attr("href"), $this.target).animate({left:curElementLeft},"fast",function(e){
|
||||||
|
$($(curStep, $this.target).attr("href"), $this.target).hide();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
_step($this, selStep).css("left",nextElmLeft1).show().animate({left:nextElmLeft2},"fast",function(e){
|
||||||
|
_setupStep($this,curStep,selStep);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
_step($this, curStep).hide();
|
||||||
|
_step($this, selStep).show();
|
||||||
|
_setupStep($this,curStep,selStep);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
|
||||||
|
var _setupStep = function($this, curStep, selStep) {
|
||||||
|
$(curStep, $this.target).removeClass("selected");
|
||||||
|
$(curStep, $this.target).addClass("done");
|
||||||
|
|
||||||
|
$(selStep, $this.target).removeClass("disabled");
|
||||||
|
$(selStep, $this.target).removeClass("done");
|
||||||
|
$(selStep, $this.target).addClass("selected");
|
||||||
|
|
||||||
|
$(selStep, $this.target).attr("isDone",1);
|
||||||
|
|
||||||
|
_adjustButton($this);
|
||||||
|
|
||||||
|
if($.isFunction($this.options.onShowStep)) {
|
||||||
|
var context = { fromStep: parseInt($(curStep).attr('rel')), toStep: parseInt($(selStep).attr('rel')) };
|
||||||
|
if(! $this.options.onShowStep.call(this,$(selStep),context)){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($this.options.noForwardJumping) {
|
||||||
|
// +2 == +1 (for index to step num) +1 (for next step)
|
||||||
|
for (var i = $this.curStepIdx + 2; i <= $this.steps.length; i++) {
|
||||||
|
$this.disableStep(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
var _adjustButton = function($this) {
|
||||||
|
if (! $this.options.cycleSteps){
|
||||||
|
if (0 >= $this.curStepIdx) {
|
||||||
|
$($this.buttons.previous).addClass("buttonDisabled");
|
||||||
|
if ($this.options.hideButtonsOnDisabled) {
|
||||||
|
$($this.buttons.previous).hide();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$($this.buttons.previous).removeClass("buttonDisabled");
|
||||||
|
if ($this.options.hideButtonsOnDisabled) {
|
||||||
|
$($this.buttons.previous).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (($this.steps.length-1) <= $this.curStepIdx){
|
||||||
|
$($this.buttons.next).addClass("buttonDisabled");
|
||||||
|
if ($this.options.hideButtonsOnDisabled) {
|
||||||
|
$($this.buttons.next).hide();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$($this.buttons.next).removeClass("buttonDisabled");
|
||||||
|
if ($this.options.hideButtonsOnDisabled) {
|
||||||
|
$($this.buttons.next).show();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Finish Button
|
||||||
|
if (! $this.steps.hasClass('disabled') || $this.options.enableFinishButton){
|
||||||
|
$($this.buttons.finish).removeClass("buttonDisabled");
|
||||||
|
if ($this.options.hideButtonsOnDisabled) {
|
||||||
|
$($this.buttons.finish).show();
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
$($this.buttons.finish).addClass("buttonDisabled");
|
||||||
|
if ($this.options.hideButtonsOnDisabled) {
|
||||||
|
$($this.buttons.finish).hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Public methods
|
||||||
|
*/
|
||||||
|
|
||||||
|
SmartWizard.prototype.goForward = function(){
|
||||||
|
var nextStepIdx = this.curStepIdx + 1;
|
||||||
|
if (this.steps.length <= nextStepIdx){
|
||||||
|
if (! this.options.cycleSteps){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
nextStepIdx = 0;
|
||||||
|
}
|
||||||
|
_loadContent(this, nextStepIdx);
|
||||||
|
};
|
||||||
|
|
||||||
|
SmartWizard.prototype.goBackward = function(){
|
||||||
|
var nextStepIdx = this.curStepIdx-1;
|
||||||
|
if (0 > nextStepIdx){
|
||||||
|
if (! this.options.cycleSteps){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
nextStepIdx = this.steps.length - 1;
|
||||||
|
}
|
||||||
|
_loadContent(this, nextStepIdx);
|
||||||
|
};
|
||||||
|
|
||||||
|
SmartWizard.prototype.goToStep = function(stepNum){
|
||||||
|
var stepIdx = stepNum - 1;
|
||||||
|
if (stepIdx >= 0 && stepIdx < this.steps.length) {
|
||||||
|
_loadContent(this, stepIdx);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
SmartWizard.prototype.enableStep = function(stepNum) {
|
||||||
|
var stepIdx = stepNum - 1;
|
||||||
|
if (stepIdx == this.curStepIdx || stepIdx < 0 || stepIdx >= this.steps.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var step = this.steps.eq(stepIdx);
|
||||||
|
$(step, this.target).attr("isDone",1);
|
||||||
|
$(step, this.target).removeClass("disabled").removeClass("selected").addClass("done");
|
||||||
|
}
|
||||||
|
SmartWizard.prototype.disableStep = function(stepNum) {
|
||||||
|
var stepIdx = stepNum - 1;
|
||||||
|
if (stepIdx == this.curStepIdx || stepIdx < 0 || stepIdx >= this.steps.length) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var step = this.steps.eq(stepIdx);
|
||||||
|
$(step, this.target).attr("isDone",0);
|
||||||
|
$(step, this.target).removeClass("done").removeClass("selected").addClass("disabled");
|
||||||
|
}
|
||||||
|
SmartWizard.prototype.currentStep = function() {
|
||||||
|
return this.curStepIdx + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
SmartWizard.prototype.showMessage = function (msg) {
|
||||||
|
$('.content', this.msgBox).html(msg);
|
||||||
|
this.msgBox.show();
|
||||||
|
}
|
||||||
|
SmartWizard.prototype.hideMessage = function () {
|
||||||
|
this.msgBox.fadeOut("normal");
|
||||||
|
}
|
||||||
|
SmartWizard.prototype.showError = function(stepnum) {
|
||||||
|
this.setError(stepnum, true);
|
||||||
|
}
|
||||||
|
SmartWizard.prototype.hideError = function(stepnum) {
|
||||||
|
this.setError(stepnum, false);
|
||||||
|
}
|
||||||
|
SmartWizard.prototype.setError = function(stepnum,iserror) {
|
||||||
|
if (typeof stepnum == "object") {
|
||||||
|
iserror = stepnum.iserror;
|
||||||
|
stepnum = stepnum.stepnum;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (iserror){
|
||||||
|
$(this.steps.eq(stepnum-1), this.target).addClass('error')
|
||||||
|
}else{
|
||||||
|
$(this.steps.eq(stepnum-1), this.target).removeClass("error");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SmartWizard.prototype.fixHeight = function(){
|
||||||
|
var height = 0;
|
||||||
|
|
||||||
|
var selStep = this.steps.eq(this.curStepIdx);
|
||||||
|
var stepContainer = _step(this, selStep);
|
||||||
|
stepContainer.children().each(function() {
|
||||||
|
height += $(this).outerHeight();
|
||||||
|
});
|
||||||
|
|
||||||
|
// These values (5 and 20) are experimentally chosen.
|
||||||
|
stepContainer.height(height + 5);
|
||||||
|
this.elmStepContainer.height(height + 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
_init(this);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(function($){
|
||||||
|
|
||||||
|
$.fn.smartWizard = function(method) {
|
||||||
|
var args = arguments;
|
||||||
|
var rv = undefined;
|
||||||
|
var allObjs = this.each(function() {
|
||||||
|
var wiz = $(this).data('smartWizard');
|
||||||
|
if (typeof method == 'object' || ! method || ! wiz) {
|
||||||
|
var options = $.extend({}, $.fn.smartWizard.defaults, method || {});
|
||||||
|
if (! wiz) {
|
||||||
|
wiz = new SmartWizard($(this), options);
|
||||||
|
$(this).data('smartWizard', wiz);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (typeof SmartWizard.prototype[method] == "function") {
|
||||||
|
rv = SmartWizard.prototype[method].apply(wiz, Array.prototype.slice.call(args, 1));
|
||||||
|
return rv;
|
||||||
|
} else {
|
||||||
|
$.error('Method ' + method + ' does not exist on jQuery.smartWizard');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (rv === undefined) {
|
||||||
|
return allObjs;
|
||||||
|
} else {
|
||||||
|
return rv;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Default Properties and Events
|
||||||
|
$.fn.smartWizard.defaults = {
|
||||||
|
selected: 0, // Selected Step, 0 = first step
|
||||||
|
keyNavigation: true, // Enable/Disable key navigation(left and right keys are used if enabled)
|
||||||
|
enableAllSteps: false,
|
||||||
|
transitionEffect: 'fade', // Effect on navigation, none/fade/slide/slideleft
|
||||||
|
contentURL:null, // content url, Enables Ajax content loading
|
||||||
|
contentCache:true, // cache step contents, if false content is fetched always from ajax url
|
||||||
|
cycleSteps: false, // cycle step navigation
|
||||||
|
enableFinishButton: false, // make finish button enabled always
|
||||||
|
hideButtonsOnDisabled: false, // when the previous/next/finish buttons are disabled, hide them instead?
|
||||||
|
errorSteps:[], // Array Steps with errors
|
||||||
|
labelNext:'Next',
|
||||||
|
labelPrevious:'Previous',
|
||||||
|
labelFinish:'Finish',
|
||||||
|
noForwardJumping: false,
|
||||||
|
onLeaveStep: null, // triggers when leaving a step
|
||||||
|
onShowStep: null, // triggers when showing a step
|
||||||
|
onFinish: null // triggers when Finish button is clicked
|
||||||
|
};
|
||||||
|
|
||||||
|
})(jQuery);
|
@ -81,6 +81,55 @@ class AdminAntConfigurations extends AdminTab
|
|||||||
} elseif(Tools::isSubmit('submitUpdateLoyaltyOrders') && $cookie->id_employee == 1) {
|
} elseif(Tools::isSubmit('submitUpdateLoyaltyOrders') && $cookie->id_employee == 1) {
|
||||||
$nb_credits = $this->updateLoyaltyOrders();
|
$nb_credits = $this->updateLoyaltyOrders();
|
||||||
HelperFormBootstrap::echoConfirmation($this->l('Credit fidélité mis à jour : ').$nb_credits);
|
HelperFormBootstrap::echoConfirmation($this->l('Credit fidélité mis à jour : ').$nb_credits);
|
||||||
|
} elseif(
|
||||||
|
(Tools::isSubmit('submitUpdateCacheSale') || Tools::isSubmit('submitShowProductCacheSale'))
|
||||||
|
&& $cookie->id_employee == 1)
|
||||||
|
{
|
||||||
|
$id_category = Tools::getValue('id_category');
|
||||||
|
if($id_category) {
|
||||||
|
$products_ids = array();
|
||||||
|
foreach(Db::getInstance()->ExecuteS('
|
||||||
|
SELECT p.id_product
|
||||||
|
FROM `ps_product` p
|
||||||
|
WHERE p.`id_category_default` = '.$id_category.'
|
||||||
|
') as $row) {
|
||||||
|
$products_ids[(int)$row['id_product']] = (int)$row['id_product'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if(count($products_ids)>0) {
|
||||||
|
if(Tools::isSubmit('submitShowProductCacheSale')) {
|
||||||
|
// show product
|
||||||
|
$result = implode(', ',$products_ids);
|
||||||
|
HelperFormBootstrap::echoConfirmation($this->l('Produits concernés ').'('.count($products_ids).') :<br />'.wordwrap($result, 100, "<br />"));
|
||||||
|
|
||||||
|
} elseif(Tools::isSubmit('submitUpdateCacheSale')) {
|
||||||
|
// update product_ps_cache
|
||||||
|
Db::getInstance()->ExecuteS('
|
||||||
|
DELETE FROM `'._DB_PREFIX_.'product_ps_cache`
|
||||||
|
WHERE `id_product` IN ('.implode(',',$products_ids).')
|
||||||
|
');
|
||||||
|
Db::getInstance()->ExecuteS('
|
||||||
|
INSERT IGNORE INTO `'._DB_PREFIX_.'product_ps_cache` (
|
||||||
|
SELECT p.id_product, IFNULL(
|
||||||
|
(
|
||||||
|
SELECT s.id_sale
|
||||||
|
FROM `'._DB_PREFIX_.'privatesale_category` s
|
||||||
|
WHERE s.`id_category` = p.`id_category_default`
|
||||||
|
LIMIT 1)
|
||||||
|
, 0
|
||||||
|
)
|
||||||
|
FROM `ps_product` p
|
||||||
|
WHERE p.`id_category_default` = '.$id_category.'
|
||||||
|
)
|
||||||
|
');
|
||||||
|
HelperFormBootstrap::echoConfirmation($this->l('Association vente produit mise à jour: #').$id_category);
|
||||||
|
}
|
||||||
|
} else{
|
||||||
|
HelperFormBootstrap::echoError($this->l('Pas de produits trouvés dans cette catégorie :#').$id_category);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
HelperFormBootstrap::echoError($this->l('Veuillez choisir une categorie'));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -131,6 +180,7 @@ class AdminAntConfigurations extends AdminTab
|
|||||||
</style>';
|
</style>';
|
||||||
|
|
||||||
$id_sale_options = array();
|
$id_sale_options = array();
|
||||||
|
$id_category_options = array();
|
||||||
foreach(Db::getInstance()->ExecuteS('
|
foreach(Db::getInstance()->ExecuteS('
|
||||||
SELECT p.`id_sale`, c.`name`, c.`id_category`
|
SELECT p.`id_sale`, c.`name`, c.`id_category`
|
||||||
FROM `'._DB_PREFIX_.'privatesale` p
|
FROM `'._DB_PREFIX_.'privatesale` p
|
||||||
@ -144,6 +194,10 @@ class AdminAntConfigurations extends AdminTab
|
|||||||
'label' => (int) $row['id_sale'].' - '.$row['name'].(empty($extrafields[(int) $row['id_category']]['sales'][1])?'':' - '.$extrafields[(int) $row['id_category']]['sales'][1]) ,
|
'label' => (int) $row['id_sale'].' - '.$row['name'].(empty($extrafields[(int) $row['id_category']]['sales'][1])?'':' - '.$extrafields[(int) $row['id_category']]['sales'][1]) ,
|
||||||
'value' => (int) $row['id_sale']
|
'value' => (int) $row['id_sale']
|
||||||
);
|
);
|
||||||
|
$id_category_options[] = array(
|
||||||
|
'label' => (int) $row['id_sale'].' (#'.(int) $row['id_category'].') - '.$row['name'].(empty($extrafields[(int) $row['id_category']]['sales'][1])?'':' - '.$extrafields[(int) $row['id_category']]['sales'][1]) ,
|
||||||
|
'value' => (int) $row['id_category']
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
$helperForm = new HelperFormBootstrap();
|
$helperForm = new HelperFormBootstrap();
|
||||||
@ -209,7 +263,7 @@ class AdminAntConfigurations extends AdminTab
|
|||||||
'sections' => array(
|
'sections' => array(
|
||||||
array(
|
array(
|
||||||
'class' => 'col-md-6',
|
'class' => 'col-md-6',
|
||||||
//'title' => $this->l('Mettre à jour les crédit fidélité'),
|
'title' => $this->l('Actions diverses'),
|
||||||
'inputs' => array(
|
'inputs' => array(
|
||||||
array(
|
array(
|
||||||
'type' => 'submit',
|
'type' => 'submit',
|
||||||
@ -220,6 +274,34 @@ class AdminAntConfigurations extends AdminTab
|
|||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
array(
|
||||||
|
'class' => 'col-md-6',
|
||||||
|
'title' => $this->l('Mettre à jour PS Cache'),
|
||||||
|
'inputs' => array(
|
||||||
|
array(
|
||||||
|
'label' => $this->l('PS Cache : '),
|
||||||
|
'type' => 'select2',
|
||||||
|
'class-select' => '',
|
||||||
|
'name' => 'id_category',
|
||||||
|
'options' => $id_category_options,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'actions' => array(
|
||||||
|
array(
|
||||||
|
'type' => 'submit',
|
||||||
|
'class' => 'btn-default',
|
||||||
|
'name' => 'submitShowProductCacheSale',
|
||||||
|
'value' => $this->l('Voir'),
|
||||||
|
),
|
||||||
|
array(
|
||||||
|
'type' => 'submit',
|
||||||
|
'class' => 'btn-primary',
|
||||||
|
'name' => 'submitUpdateCacheSale',
|
||||||
|
'value' => $this->l('Ré-Associer'),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
'actions-class' => 'text-right',
|
||||||
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -3,9 +3,9 @@ if(!defined('_PS_VERSION_')) {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
include_once(_PS_ROOT_DIR_.'/modules/privatesales/Sale.php');
|
include_once(_PS_ROOT_DIR_.'/modules/privatesales/Sale.php');
|
||||||
|
include_once(_PS_ROOT_DIR_.'/modules/categoryfamily/models/CategoryFamily.php');
|
||||||
require_once(PS_ADMIN_DIR . '/helpers/HelperFormBootstrap.php');
|
require_once(PS_ADMIN_DIR . '/helpers/HelperFormBootstrap.php');
|
||||||
require_once(PS_ADMIN_DIR . '/helpers/HelperList.php');
|
require_once(PS_ADMIN_DIR . '/helpers/HelperList.php');
|
||||||
require_once(_PS_ROOT_DIR_.'/modules/categoryfamily/models/CategoryFamily.php');
|
|
||||||
|
|
||||||
class AdminAntCreationcategories extends AdminTab
|
class AdminAntCreationcategories extends AdminTab
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
require dirname(__FILE__).'/models/CategoryFamily.php';
|
require_once dirname(__FILE__).'/models/CategoryFamily.php';
|
||||||
|
|
||||||
class CategoryFamily extends Module {
|
class CategoryFamily extends Module {
|
||||||
|
|
||||||
|
@ -32,6 +32,62 @@ class AdminLabelGenerate extends AdminTab {
|
|||||||
if (glob(_PS_MODULE_DIR_.'labelgenerate/img/rack/rack.pdf')) {
|
if (glob(_PS_MODULE_DIR_.'labelgenerate/img/rack/rack.pdf')) {
|
||||||
$this->_html .= '<p class="conf">Rack générés : <a target="_blank" href="/modules/labelgenerate/img/rack/rack.pdf">Télécharger le PDF rack</a></p>';
|
$this->_html .= '<p class="conf">Rack générés : <a target="_blank" href="/modules/labelgenerate/img/rack/rack.pdf">Télécharger le PDF rack</a></p>';
|
||||||
}
|
}
|
||||||
|
} elseif ($current_sale && Tools::getValue('generateRef')) {
|
||||||
|
$sale = new Sale((int)$current_sale);
|
||||||
|
|
||||||
|
if(!Validate::isLoadedObject($sale)) {
|
||||||
|
throw new Exception('This sale doesnt exist');
|
||||||
|
} else {
|
||||||
|
$products = $sale->getProducts();
|
||||||
|
$products_generate = array();
|
||||||
|
|
||||||
|
$barcode = new GenerateBarcode();
|
||||||
|
$barcode->id_sale = $sale->id;
|
||||||
|
$barcode->createFolder($barcode->id_sale);
|
||||||
|
|
||||||
|
foreach ($products as $key => $id_product) {
|
||||||
|
$product = new Product($id_product, FALSE, (int) $cookie->id_lang);
|
||||||
|
$attributes = array();
|
||||||
|
|
||||||
|
$combinations = $product->getAttributeCombinaisons($cookie->id_lang);
|
||||||
|
if ($combinations) {
|
||||||
|
foreach ($combinations as $key => $combination) {
|
||||||
|
$result_quantities = Db::getInstance()->executeS('
|
||||||
|
SELECT od.`product_quantity`,od.`product_quantity_reinjected`
|
||||||
|
FROM '._DB_PREFIX_.'order_detail od
|
||||||
|
WHERE od.`product_id` = ' . (int)$combination['id_product'] .'
|
||||||
|
AND od.`product_attribute_id`= ' . (int)$combination['id_product_attribute']
|
||||||
|
);
|
||||||
|
$quantity = 0;
|
||||||
|
foreach ($result_quantities as $od) {
|
||||||
|
$quantity += ($od['product_quantity'] - $od['product_quantity_reinjected']);
|
||||||
|
}
|
||||||
|
if ($quantity>0) {
|
||||||
|
$barcode->assocProduct($combination['id_product'], $combination['id_product_attribute'], $quantity, $product->reference);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result_quantities = Db::getInstance()->executeS('
|
||||||
|
SELECT od.`product_quantity`,od.`product_quantity_reinjected`
|
||||||
|
FROM '._DB_PREFIX_.'order_detail od
|
||||||
|
WHERE od.`product_id` = ' . (int)$product->id . ' AND `product_attribute_id` = 0'
|
||||||
|
);
|
||||||
|
$quantity = 0;
|
||||||
|
foreach ($result_quantities as $od) {
|
||||||
|
$quantity += ($od['product_quantity'] - $od['product_quantity_reinjected']);
|
||||||
|
}
|
||||||
|
if ($quantity>0) {
|
||||||
|
$barcode->assocProduct($product->id, NULL, $quantity, $product->reference);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (glob(_PS_MODULE_DIR_.'labelgenerate/img/'.$barcode->id_sale.'/reference.pdf')) {
|
||||||
|
$this->_html .= '<p class="conf">Dernières ref générées : <a target="_blank" href="/modules/labelgenerate/img/'.$barcode->id_sale.'/reference.pdf">Télécharger le PDF</a></p>';
|
||||||
|
} else {
|
||||||
|
$barcode->printPDF(true);
|
||||||
|
$this->_html .= '<p class="conf">Génération terminée : <a target="_blank" href="/modules/labelgenerate/img/'.$barcode->id_sale.'/reference.pdf">Télécharger le PDF</a></p>';
|
||||||
|
}
|
||||||
|
}
|
||||||
} elseif ($current_sale && Tools::getValue('deleteEAN')) {
|
} elseif ($current_sale && Tools::getValue('deleteEAN')) {
|
||||||
$sale = new Sale((int)$current_sale);
|
$sale = new Sale((int)$current_sale);
|
||||||
|
|
||||||
@ -267,6 +323,10 @@ class AdminLabelGenerate extends AdminTab {
|
|||||||
</select>
|
</select>
|
||||||
<br class="clear"/>
|
<br class="clear"/>
|
||||||
<br class="clear"/>
|
<br class="clear"/>
|
||||||
|
<div style="text-align:center">
|
||||||
|
<button class="button" id="generateRef" style="display:inline-block">Générer les Ref pour tous les produits vendus</button>
|
||||||
|
</div>
|
||||||
|
<br class="clear"/>
|
||||||
<div style="text-align:center">
|
<div style="text-align:center">
|
||||||
<button class="button" id="generateEAN" style="display:inline-block">Générer les EANs pour produits vendus</button>
|
<button class="button" id="generateEAN" style="display:inline-block">Générer les EANs pour produits vendus</button>
|
||||||
</div>
|
</div>
|
||||||
@ -307,7 +367,7 @@ class AdminLabelGenerate extends AdminTab {
|
|||||||
);
|
);
|
||||||
|
|
||||||
$(".chosen-select").chosen().change( function() {});
|
$(".chosen-select").chosen().change( function() {});
|
||||||
|
|
||||||
$("#generateEAN").click(function(){
|
$("#generateEAN").click(function(){
|
||||||
if ($(".chosen-select").val() != 999999) {
|
if ($(".chosen-select").val() != 999999) {
|
||||||
$(\'#category_selector\').hide();
|
$(\'#category_selector\').hide();
|
||||||
@ -315,6 +375,13 @@ class AdminLabelGenerate extends AdminTab {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$("#generateRef").click(function(){
|
||||||
|
if ($(".chosen-select").val() != 999999) {
|
||||||
|
$(\'#category_selector\').hide();
|
||||||
|
document.location.href=\'index.php?tab=AdminLabelGenerate&token='.Tools::getAdminTokenLite('AdminLabelGenerate').'&generateRef=1&id_sale=\' + $(".chosen-select").val();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
$("#generateALLEAN").click(function(){
|
$("#generateALLEAN").click(function(){
|
||||||
if ($(".chosen-select").val() != 999999) {
|
if ($(".chosen-select").val() != 999999) {
|
||||||
$(\'#category_selector\').hide();
|
$(\'#category_selector\').hide();
|
||||||
@ -324,7 +391,7 @@ class AdminLabelGenerate extends AdminTab {
|
|||||||
|
|
||||||
$("#deleteEAN").click(function(){
|
$("#deleteEAN").click(function(){
|
||||||
ok = confirm("Êtes vous sur de vouloir supprimer les eans de cette vente ?")
|
ok = confirm("Êtes vous sur de vouloir supprimer les eans de cette vente ?")
|
||||||
if (ok == true){
|
if (ok == true){
|
||||||
if ($(".chosen-select").val() != 999999) {
|
if ($(".chosen-select").val() != 999999) {
|
||||||
document.location.href=\'index.php?tab=AdminLabelGenerate&token='.Tools::getAdminTokenLite('AdminLabelGenerate').'&deleteEAN=1&id_sale=\' + $(".chosen-select").val();
|
document.location.href=\'index.php?tab=AdminLabelGenerate&token='.Tools::getAdminTokenLite('AdminLabelGenerate').'&deleteEAN=1&id_sale=\' + $(".chosen-select").val();
|
||||||
}
|
}
|
||||||
|
@ -127,7 +127,8 @@ class GenerateBarcode {
|
|||||||
$this->products[] = array(
|
$this->products[] = array(
|
||||||
'key' => ($id_product.'-'.$id_product_attribute),
|
'key' => ($id_product.'-'.$id_product_attribute),
|
||||||
'label' => ($name_combination . ' ' . $p['name']),
|
'label' => ($name_combination . ' ' . $p['name']),
|
||||||
'ref' => $ref
|
'ref' => $ref,
|
||||||
|
'decli' => substr($name_combination,0,-1)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -135,41 +136,76 @@ class GenerateBarcode {
|
|||||||
$this->products[] = array(
|
$this->products[] = array(
|
||||||
'key' => $id_product.'-0',
|
'key' => $id_product.'-0',
|
||||||
'label' => $p['name'],
|
'label' => $p['name'],
|
||||||
'ref' => $ref
|
'ref' => $ref,
|
||||||
|
'decli' => ''
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//$this->products[] = array();
|
//$this->products[] = array();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function printPDF() {
|
public function printPDF($generate_ref = false) {
|
||||||
global $cookie;
|
global $cookie;
|
||||||
|
|
||||||
// données test
|
// données test
|
||||||
/*for ($i=0; $i < 30; $i++) {
|
// for ($i=0; $i < 60; $i++) {
|
||||||
$this->products[$i] = array(
|
// $this->products[$i] = array(
|
||||||
'key' => "125415-322",
|
// 'key' => "125415-323",
|
||||||
'label' => "03 mois (62 cm)- Lot de 2 bodies Ri",
|
// 'label' => "06 mois (68 cm)- Lot de 2 bodies Ri",
|
||||||
"ref" => "FIX-06-86763"
|
// "ref" => "FIX-06-86763",
|
||||||
);
|
// "decli" => '06 mois (68 cm)'
|
||||||
}
|
// );
|
||||||
for ($i=31; $i < 80; $i++) {
|
// }
|
||||||
$this->products[$i] = array(
|
// for ($i=61; $i < 80; $i++) {
|
||||||
'key' => "125416-332",
|
// $this->products[$i] = array(
|
||||||
'label' => "03 mois (62 cm)- Ensemble grenouill",
|
// 'key' => "125416-332",
|
||||||
"ref" => "FIX-04-86763"
|
// 'label' => "03 mois (62 cm) - Ensemble grenouill",
|
||||||
);
|
// "ref" => "FIX-04-86763",
|
||||||
}*/
|
// "decli" => '03 mois (62 cm)'
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// for ($i=81; $i < 100; $i++) {
|
||||||
|
// $this->products[$i] = array(
|
||||||
|
// 'key' => "125415-322",
|
||||||
|
// 'label' => "03 mois (62 cm) - Ensemble grenouill",
|
||||||
|
// "ref" => "FIX-06-86763",
|
||||||
|
// "decli" => '03 mois (62 cm)'
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// for ($i=101; $i < 145; $i++) {
|
||||||
|
// $this->products[$i] = array(
|
||||||
|
// 'key' => "125417-325",
|
||||||
|
// 'label' => "06 mois (68 cm) - Ensemble grenouill",
|
||||||
|
// "ref" => "FIX-18-32094",
|
||||||
|
// "decli" => '06 mois (68 cm)'
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// for ($i=146; $i < 206; $i++) {
|
||||||
|
// $this->products[$i] = array(
|
||||||
|
// 'key' => "125417",
|
||||||
|
// 'label' => "06 mois (68 cm) - Ensemble grenouill",
|
||||||
|
// "ref" => "FIX-16-32094",
|
||||||
|
// "decli" => '06 mois (68 cm)'
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
if (empty($this->products)) {
|
if (empty($this->products)) {
|
||||||
die('Tous les produits ont déjà un EAN');
|
die('Pas de produits à générer !');
|
||||||
|
}
|
||||||
|
if($generate_ref){
|
||||||
|
$this->products = $this->_multiSortProduct($this->products);
|
||||||
|
} else {
|
||||||
|
$this->products = $this->_sortProducts($this->products, 'ref');
|
||||||
}
|
}
|
||||||
$this->products = $this->_sortProducts($this->products, 'ref');
|
|
||||||
|
|
||||||
ob_start();
|
ob_start();
|
||||||
$pdf = new FPDF('P', 'mm', 'A4');
|
$pdf = new FPDF('P', 'mm', 'A4');
|
||||||
$nb_per_page = 0;
|
$nb_per_page = 0;
|
||||||
$pdf->SetMargins(9,12,9);
|
if($generate_ref) {
|
||||||
|
$pdf->SetMargins(9,13,9);
|
||||||
|
} else {
|
||||||
|
$pdf->SetMargins(9,12,9);
|
||||||
|
}
|
||||||
$pdf->SetAutoPageBreak(FALSE);
|
$pdf->SetAutoPageBreak(FALSE);
|
||||||
$pdf->AddPage();
|
$pdf->AddPage();
|
||||||
$pdf->SetFont('Arial','',14);
|
$pdf->SetFont('Arial','',14);
|
||||||
@ -191,26 +227,44 @@ class GenerateBarcode {
|
|||||||
foreach ($product_per_line as $key => $product) {
|
foreach ($product_per_line as $key => $product) {
|
||||||
if (empty($product)) {
|
if (empty($product)) {
|
||||||
$pdf->Cell(48, 4, '', 0,0, 'C');
|
$pdf->Cell(48, 4, '', 0,0, 'C');
|
||||||
|
} elseif($generate_ref) {
|
||||||
|
$pdf->SetFont('Arial', '', 7);
|
||||||
|
$pdf->Cell(48, 8, substr(utf8_decode($product['decli']), 0, 35), 0,0, 'C');
|
||||||
} else {
|
} else {
|
||||||
$this->_printLabel($pdf, $product['label'], 1);
|
$this->_printLabel($pdf, $product['label'], 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$pdf->Ln(4);
|
if($generate_ref) {
|
||||||
|
$pdf->Ln(8);
|
||||||
|
} else {
|
||||||
|
$pdf->Ln(4);
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($product_per_line as $key => $product) {
|
foreach ($product_per_line as $key => $product) {
|
||||||
if (empty($product)) {
|
if (empty($product)) {
|
||||||
$pdf->Cell(48, 10, '', 0,0, 'C');
|
$pdf->Cell(48, 10, '', 0,0, 'C');
|
||||||
|
} elseif($generate_ref) {
|
||||||
|
$pdf->SetFont('Arial', '', 7);
|
||||||
|
$pdf->Cell(48, 8, $product['ref'], 0,0, 'C');
|
||||||
} else {
|
} else {
|
||||||
$ean_image = $this->directory.'/ean-'.$product['key'].'.gif';
|
$ean_image = $this->directory.'/ean-'.$product['key'].'.gif';
|
||||||
$this->_printEAN($pdf, $ean_image, 1);
|
$this->_printEAN($pdf, $ean_image, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$pdf->Ln(13);
|
if($generate_ref) {
|
||||||
|
$pdf->Ln(9);
|
||||||
|
} else {
|
||||||
|
$pdf->Ln(13);
|
||||||
|
}
|
||||||
|
|
||||||
$nb_per_page += 1;
|
$nb_per_page += 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$pdf->Output($this->directory.'/barcode.pdf', 'F');
|
if($generate_ref){
|
||||||
|
$pdf->Output($this->directory.'/reference.pdf', 'F');
|
||||||
|
} else {
|
||||||
|
$pdf->Output($this->directory.'/barcode.pdf', 'F');
|
||||||
|
}
|
||||||
ob_clean();
|
ob_clean();
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@ -228,6 +282,32 @@ class GenerateBarcode {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function _multiSortProduct($products = array()){
|
||||||
|
if (!empty($products)) {
|
||||||
|
$ref = array();
|
||||||
|
$decli = array();
|
||||||
|
foreach ($products as $key => $row) {
|
||||||
|
$ref[$key] = $row['ref'];
|
||||||
|
$decli[$key] = $row['decli'];
|
||||||
|
}
|
||||||
|
array_multisort($ref, SORT_ASC, $decli, SORT_ASC, $products);
|
||||||
|
|
||||||
|
$ref = '';
|
||||||
|
$result = array();
|
||||||
|
foreach ($products as $k => $v) {
|
||||||
|
if ($ref !== $v['ref'] && !empty($ref)) {
|
||||||
|
$result[] = array();
|
||||||
|
$result[] = $v;
|
||||||
|
$ref = $v['ref'];
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
$result[] = $v;
|
||||||
|
$ref = $v['ref'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
private function _sortProducts($array = array(), $field, $order=SORT_ASC) {
|
private function _sortProducts($array = array(), $field, $order=SORT_ASC) {
|
||||||
$new_array = array();
|
$new_array = array();
|
||||||
$sortable_array = array();
|
$sortable_array = array();
|
||||||
|
@ -450,11 +450,15 @@ class AdminPhileaMagistor extends AdminTab {
|
|||||||
|
|
||||||
$philea_sales = array();
|
$philea_sales = array();
|
||||||
foreach(Db::getInstance()->ExecuteS('
|
foreach(Db::getInstance()->ExecuteS('
|
||||||
SELECT `id_sale`
|
SELECT p.`id_sale`, c.`name`, c.`id_category`
|
||||||
FROM `'._DB_PREFIX_.'philea_sync`
|
FROM `'._DB_PREFIX_.'philea_sync` p
|
||||||
|
Left JOIN `'._DB_PREFIX_.'privatesale` ps ON (ps.`id_sale` = p.`id_sale`)
|
||||||
|
LEFT JOIN `'._DB_PREFIX_.'category_lang` c ON (c.`id_category` = ps.`id_category`)
|
||||||
|
WHERE c.`id_lang` = '.$cookie->id_lang.'
|
||||||
|
ORDER BY p.`id_sale` DESC
|
||||||
') as $row) {
|
') as $row) {
|
||||||
$philea_sales[] = $row['id_sale'];
|
$philea_sales[] = $row['id_sale'];
|
||||||
}
|
}
|
||||||
$id_sale_options = array();
|
$id_sale_options = array();
|
||||||
foreach(Db::getInstance()->ExecuteS('
|
foreach(Db::getInstance()->ExecuteS('
|
||||||
SELECT p.`id_sale`, c.`name`, c.`id_category`
|
SELECT p.`id_sale`, c.`name`, c.`id_category`
|
||||||
@ -477,6 +481,7 @@ class AdminPhileaMagistor extends AdminTab {
|
|||||||
$helperForm = new HelperFormBootstrap();
|
$helperForm = new HelperFormBootstrap();
|
||||||
$helperForm->_select2 = true;
|
$helperForm->_select2 = true;
|
||||||
$helperForm->_inputMask = true;
|
$helperForm->_inputMask = true;
|
||||||
|
$helperForm->_inputWizard = true;
|
||||||
|
|
||||||
$helperForm->_forms = array(
|
$helperForm->_forms = array(
|
||||||
array(
|
array(
|
||||||
@ -798,11 +803,146 @@ class AdminPhileaMagistor extends AdminTab {
|
|||||||
';
|
';
|
||||||
|
|
||||||
|
|
||||||
|
$form .= $this->displayDestockForm();
|
||||||
$form .= $this->displayArchives();
|
$form .= $this->displayArchives();
|
||||||
|
|
||||||
|
$helperForm->_js .= '
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
var wizardform = $(\'#wizard\').smartWizard({
|
||||||
|
labelNext:\'Suivant\',
|
||||||
|
labelPrevious:\'Précedent\',
|
||||||
|
labelFinish:\'Reset\',
|
||||||
|
reverseButtonsOrder:true,
|
||||||
|
contentURL:\'../modules/philea_magistor/ajax.php?action=destock\',
|
||||||
|
ajaxData : {},
|
||||||
|
beforeLoadContent: beforeLoadContentCallback,
|
||||||
|
onShowStep : onShowStepCallback,
|
||||||
|
onFinish: onFinishCallback,
|
||||||
|
contentURLData:null,
|
||||||
|
enableFinishButton: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
$(\'#wizard_reset\').click(function(e){
|
||||||
|
e.preventDefault;
|
||||||
|
resetWizard();
|
||||||
|
});
|
||||||
|
|
||||||
|
function beforeLoadContentCallback(obj, context){
|
||||||
|
var data = {};
|
||||||
|
if (context.fromStep == 1) {
|
||||||
|
data = {
|
||||||
|
id_category: $(\'#wizard_id_category\').val(),
|
||||||
|
id_sale : $("option:selected", $(\'#wizard_id_category\')).data(\'id_sale\')
|
||||||
|
};
|
||||||
|
this.options.ajaxData = data;
|
||||||
|
} else if(context.fromStep == 2) {
|
||||||
|
data = {
|
||||||
|
id_products: $(\'#wizard_product_ids\').val(),
|
||||||
|
id_sale: $(\'#wizard_id_sale\').val(),
|
||||||
|
id_category: $(\'#wizard_id_category\').val(),
|
||||||
|
};
|
||||||
|
this.options.ajaxData = data;
|
||||||
|
} else if(context.fromStep == 3){
|
||||||
|
data = {
|
||||||
|
id_sale: $(\'#wizard_id_sale\').val()
|
||||||
|
};
|
||||||
|
this.options.ajaxData = data;
|
||||||
|
}
|
||||||
|
this.options.ajaxData = data;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
function onShowStepCallback(obj, context){
|
||||||
|
if(context.fromStep != 1 && context.toStep == 1) {
|
||||||
|
var allAnchors = $(\'#wizard\').children("ul").children("li").children("a");
|
||||||
|
allAnchors.addClass(\'disabled\');
|
||||||
|
allAnchors.removeClass(\'done\');
|
||||||
|
allAnchors.data(\'isdone\',0);
|
||||||
|
obj.removeClass(\'disabled\');
|
||||||
|
obj.data(\'isdone\',1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function onFinishCallback(objs, context){
|
||||||
|
resetWizard();
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetWizard(){
|
||||||
|
var allDivs = $(\'.stepContainer\').children(\'div\');
|
||||||
|
var allAnchors = $(\'#wizard\').children("ul").children("li").children("a");
|
||||||
|
allAnchors.data(\'hasContent\',false);
|
||||||
|
allDivs.empty();
|
||||||
|
$(\'#wizard\').smartWizard(\'goToStep\',1);
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
</script>';
|
||||||
|
|
||||||
$form .= $helperForm->renderScript();
|
$form .= $helperForm->renderScript();
|
||||||
echo $form;
|
echo $form;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function displayDestockForm() {
|
||||||
|
$form ='
|
||||||
|
<div class="panel">
|
||||||
|
<div class="panel-title">
|
||||||
|
<h2>Remise en vente</h2>
|
||||||
|
<ul class="nav navbar-right panel-toolbox">
|
||||||
|
<li><a id="wizard_reset" class="collapse-link"><i class="glyphicon glyphicon-repeat"></i></a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
</div>
|
||||||
|
<div class="panel-content">
|
||||||
|
<div id="wizard" class="form_wizard wizard_horizontal">
|
||||||
|
<ul class="wizard_steps anchor">
|
||||||
|
<li>
|
||||||
|
<a href="#step-1" class="selected" isdone="1" rel="1">
|
||||||
|
<span class="step_no">1</span>
|
||||||
|
<span class="step_descr">
|
||||||
|
Step 1<br>
|
||||||
|
<small>Choisir une Catégorie</small>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#step-2" class="done" isdone="1" rel="2">
|
||||||
|
<span class="step_no">2</span>
|
||||||
|
<span class="step_descr">
|
||||||
|
Step 2<br>
|
||||||
|
<small>Voir les produits</small>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#step-3" class="disabled" isdone="0" rel="3">
|
||||||
|
<span class="step_no">3</span>
|
||||||
|
<span class="step_descr">
|
||||||
|
Step 3<br>
|
||||||
|
<small>Réassocier</small>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#step-4" class="disabled" isdone="0" rel="4">
|
||||||
|
<span class="step_no">3</span>
|
||||||
|
<span class="step_descr">
|
||||||
|
Step 4<br>
|
||||||
|
<small>Activer la synchro Philéa</small>
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<div id="step-1"></div>
|
||||||
|
<div id="step-2"></div>
|
||||||
|
<div id="step-3"></div>
|
||||||
|
<div id="step-4"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>';
|
||||||
|
return $form;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get CRR files for not sent sales
|
* Get CRR files for not sent sales
|
||||||
*/
|
*/
|
||||||
@ -979,6 +1119,7 @@ class AdminPhileaMagistor extends AdminTab {
|
|||||||
'title' => $this->l('Archives'),
|
'title' => $this->l('Archives'),
|
||||||
'icon' => '<span class="glyphicon glyphicon-level-up"></span> ',
|
'icon' => '<span class="glyphicon glyphicon-level-up"></span> ',
|
||||||
'class' => 'form-horizontal',
|
'class' => 'form-horizontal',
|
||||||
|
'class_div' => '',
|
||||||
'sections' => array(
|
'sections' => array(
|
||||||
array(
|
array(
|
||||||
'inputs' => array(
|
'inputs' => array(
|
||||||
@ -986,7 +1127,7 @@ class AdminPhileaMagistor extends AdminTab {
|
|||||||
'type' => 'select2',
|
'type' => 'select2',
|
||||||
'class-select' => '',
|
'class-select' => '',
|
||||||
'name' => 'id_sale_unarchive',
|
'name' => 'id_sale_unarchive',
|
||||||
'label' => $this->l('Choisir une vente'),
|
'label' => $this->l('Vente'),
|
||||||
'options' => $archives_options,
|
'options' => $archives_options,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -3,26 +3,182 @@
|
|||||||
require_once(dirname(__FILE__).'../../../config/config.inc.php');
|
require_once(dirname(__FILE__).'../../../config/config.inc.php');
|
||||||
require_once(dirname(__FILE__).'../../../init.php');
|
require_once(dirname(__FILE__).'../../../init.php');
|
||||||
|
|
||||||
header('Content-Type: application/json');
|
if(Tools::getValue('action') == 'getReport') {
|
||||||
if(Tools::getValue('action') != 'getReport') {
|
header('Content-Type: application/json');
|
||||||
|
switch (Tools::getValue('type')) {
|
||||||
|
case 'ART':
|
||||||
|
die(getReport('ART'));
|
||||||
|
break;
|
||||||
|
case 'CDC':
|
||||||
|
die(getReport('CDC'));
|
||||||
|
break;
|
||||||
|
case 'CRP':
|
||||||
|
die(getReport('CRP'));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
http_response_code(418);
|
||||||
|
die(json_encode('I\'m a teapot'));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} elseif(Tools::getValue('action') == 'destock') {
|
||||||
|
getStepDestock();
|
||||||
|
} else {
|
||||||
http_response_code(418);
|
http_response_code(418);
|
||||||
die('I\'m a teapot');
|
die('I\'m a teapot');
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (Tools::getValue('type')) {
|
function getStepDestock(){
|
||||||
case 'ART':
|
$step = $_REQUEST["step_number"];
|
||||||
die(getReport('ART'));
|
$html = '';
|
||||||
break;
|
|
||||||
case 'CDC':
|
if($step == 1) {
|
||||||
die(getReport('CDC'));
|
$html.='<h2 class="StepTitle">Choisir La nouvelle vente</h2>
|
||||||
break;
|
<div class="form-group col-sm-4 col-sm-offset-4">
|
||||||
case 'CRP':
|
<select class="form-control" name="id_category" id="wizard_id_category" tabindex="-1">';
|
||||||
die(getReport('CRP'));
|
foreach(Db::getInstance()->ExecuteS('
|
||||||
break;
|
SELECT p.`id_sale`, c.`name`, c.`id_category`
|
||||||
default:
|
FROM `'._DB_PREFIX_.'philea_sync` p
|
||||||
http_response_code(418);
|
Left JOIN `'._DB_PREFIX_.'privatesale` ps ON (ps.`id_sale` = p.`id_sale`)
|
||||||
die(json_encode('I\'m a teapot'));
|
LEFT JOIN `'._DB_PREFIX_.'category_lang` c ON (c.`id_category` = ps.`id_category`)
|
||||||
break;
|
WHERE c.`id_lang` = 2
|
||||||
|
ORDER BY p.`id_sale` DESC
|
||||||
|
') as $row) {
|
||||||
|
$extrafields = Category::getSalesInfos(array((int) $row['id_category']));
|
||||||
|
$html .= '<option data-id_sale="'.(int) $row['id_sale'].'" id="id_category_'.(int)$row['id_category'].'" value="'.(int)$row['id_category'].'">'.(int) $row['id_sale'].' (#'.(int) $row['id_category'].') - '.$row['name'].(empty($extrafields[(int) $row['id_category']]['sales'][1])?'':' - '.$extrafields[(int) $row['id_category']]['sales'][1]).'</option>';
|
||||||
|
}
|
||||||
|
$html .='</select>
|
||||||
|
</div>
|
||||||
|
<div class="clearfix"></div>
|
||||||
|
<div class="form-group col-sm-4 col-sm-offset-4">
|
||||||
|
<p class="text-center">Les produits doivent déjà se trouver dans la nouvelle catégorie (vente).</p>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function() {
|
||||||
|
$("#wizard_id_category").select2({
|
||||||
|
placeholder: "",
|
||||||
|
allowClear: true,
|
||||||
|
width: \'100%\'
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>';
|
||||||
|
|
||||||
|
} elseif($step == 2) {
|
||||||
|
$html .= '<h2 class="StepTitle">Les produits de la catégorie</h2>';
|
||||||
|
if(Tools::getValue('id_category')) {
|
||||||
|
$id_category = Tools::getValue('id_category');
|
||||||
|
$id_sale = Tools::getValue('id_sale');
|
||||||
|
$product_ids = array();
|
||||||
|
$sale_ids = array();
|
||||||
|
$products = Db::getInstance()->ExecuteS('
|
||||||
|
SELECT p.`id_product`, ps.`id_sale`
|
||||||
|
FROM `'._DB_PREFIX_.'product` p
|
||||||
|
LEFT JOIN `'._DB_PREFIX_.'product_ps_cache` ps ON (p.`id_product` = ps.`id_product`)
|
||||||
|
WHERE p.`id_category_default` = '.(int)$id_category.'
|
||||||
|
');
|
||||||
|
foreach($products as $row) {
|
||||||
|
$product_ids[(int)$row['id_product']] = (int)$row['id_product'];
|
||||||
|
$sale_ids[(int)$row['id_sale']] = (int)$row['id_sale'];
|
||||||
|
}
|
||||||
|
if(count($product_ids)>0) {
|
||||||
|
$html .= '<div>
|
||||||
|
<p class="text-center">Produits Concernés ('.count($product_ids).') :</p>
|
||||||
|
<div class="col-sm-4 col-sm-offset-4">
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th align="center">ID Produit</th>
|
||||||
|
<th align="center">ID Vente (old)</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>';
|
||||||
|
foreach ($products as $product) {
|
||||||
|
$html .= '<tr>
|
||||||
|
<td align="center">'.$product['id_product'].'</td>
|
||||||
|
<td align="center">'.$product['id_sale'].'</td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
$html .= '</tbody>
|
||||||
|
</table>
|
||||||
|
<p class="text-center">Cliquer sur suivant pour réassocier les produits à la nouvelle vente</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="wizard_product_ids" value="'.implode(',',$product_ids).'"/>
|
||||||
|
<input type="hidden" id="wizard_id_sale" value="'.$id_sale.'"/>
|
||||||
|
<input type="hidden" id="wizard_id_category" value="'.$id_category.'"/>';
|
||||||
|
} else {
|
||||||
|
$html .= '<div><p class="text-center">Pas de produits trouvés dans cette catégorie</p></div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$html .= '<div><p class="text-center">Vous devez choisir une catégorie</p></div>';
|
||||||
|
}
|
||||||
|
} elseif($step == 3) {
|
||||||
|
if(Tools::getValue('id_products')) {
|
||||||
|
$products_ids = Tools::getValue('id_products');
|
||||||
|
$id_category = Tools::getValue('id_category');
|
||||||
|
$id_sale = Tools::getValue('id_sale');
|
||||||
|
Db::getInstance()->ExecuteS('
|
||||||
|
DELETE FROM `'._DB_PREFIX_.'product_ps_cache`
|
||||||
|
WHERE `id_product` IN ('.$products_ids.')
|
||||||
|
');
|
||||||
|
Db::getInstance()->ExecuteS('
|
||||||
|
INSERT IGNORE INTO `'._DB_PREFIX_.'product_ps_cache` (
|
||||||
|
SELECT p.id_product, IFNULL(
|
||||||
|
(
|
||||||
|
SELECT s.id_sale
|
||||||
|
FROM `'._DB_PREFIX_.'privatesale_category` s
|
||||||
|
WHERE s.`id_category` = p.`id_category_default`
|
||||||
|
LIMIT 1)
|
||||||
|
, 0
|
||||||
|
)
|
||||||
|
FROM `ps_product` p
|
||||||
|
WHERE p.`id_category_default` = '.(int)$id_category.'
|
||||||
|
)
|
||||||
|
');
|
||||||
|
$html .= '<h2 class="StepTitle">Réassociation Réussie</h2>
|
||||||
|
<div class="col-sm-6 col-sm-offset-3">
|
||||||
|
<p class="text-center">Vous devez maintenant activer la vente pour que la synchronisation vers Philéa se fasse.</p>
|
||||||
|
<p class="text-center">(Pensez bien à vérifier vos stocks avec Philéa, la synchronisation ne s\'en charge pas)</p>
|
||||||
|
</div>
|
||||||
|
<input type="hidden" id="wizard_id_sale" value="'.$id_sale.'"/>';
|
||||||
|
} else {
|
||||||
|
$html .= '<div><p class="text-center">Pas de produits à associer</p></div>';
|
||||||
|
}
|
||||||
|
} elseif($step == 4) {
|
||||||
|
$id_sale = Tools::getValue('id_sale');
|
||||||
|
if($id_sale) {
|
||||||
|
$sql = '
|
||||||
|
UPDATE `'._DB_PREFIX_.'philea_sync` SET
|
||||||
|
`status` = 2,
|
||||||
|
`products` = 2
|
||||||
|
WHERE `id_sale` = '.(int)$id_sale;
|
||||||
|
if(Db::getInstance()->execute($sql)){
|
||||||
|
$sql = '
|
||||||
|
INSERT INTO `'._DB_PREFIX_.'philea_auto_sync`
|
||||||
|
VALUES (
|
||||||
|
'.(int) $id_sale.',
|
||||||
|
1,
|
||||||
|
"0000-00-00 00:00:00"
|
||||||
|
)
|
||||||
|
ON DUPLICATE KEY
|
||||||
|
UPDATE `active` = 1';
|
||||||
|
|
||||||
|
if(Db::getInstance()->execute($sql)){
|
||||||
|
$html .= '<h2 class="StepTitle">Activation de la synchronisation Philéa</h2>
|
||||||
|
<div class="col-sm-4 col-sm-offset-4 alert-custom alert-ok">
|
||||||
|
<i class="glyphicon glyphicon-ok"></i> <span class="text-alert">La vente est activée et automatiquement synchronisée</span>
|
||||||
|
</div>';
|
||||||
|
} else {
|
||||||
|
$html .= '<div><p class="text-center">La synchronisation auto n\'a pas pu se faire (faites appel à votre maintenance)</p></div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$html .= '<div><p class="text-center">L\'acitvation n\'a pas pu se faire (faites appel à votre maintenance)</p></div>';
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$html .= '<div><p class="text-center">Une erreur est survenue</p></div>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
echo $html;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getReport($type) {
|
function getReport($type) {
|
||||||
|
@ -98,7 +98,7 @@ if($magistorModule->active) {
|
|||||||
|
|
||||||
$orders = $db->ExecuteS('
|
$orders = $db->ExecuteS('
|
||||||
SELECT * FROM `'._DB_PREFIX_.'orders`
|
SELECT * FROM `'._DB_PREFIX_.'orders`
|
||||||
WHERE `date_add` > "2016-09-30 00:00:00"
|
WHERE `date_add` > "2016-12-20 00:00:00"
|
||||||
'.(count($exclude_orders) > 0? 'AND `id_order` NOT IN ('.implode(', ', $exclude_orders).')': '').'
|
'.(count($exclude_orders) > 0? 'AND `id_order` NOT IN ('.implode(', ', $exclude_orders).')': '').'
|
||||||
'.(count($include_orders) > 0? 'AND `id_order` IN ('.implode(', ', $include_orders).')': '').'
|
'.(count($include_orders) > 0? 'AND `id_order` IN ('.implode(', ', $include_orders).')': '').'
|
||||||
');
|
');
|
||||||
|
@ -816,6 +816,13 @@ if(Tools::getValue('action') == 'getOrderForm' && ( ( $id_category = Tools::getV
|
|||||||
case '4':
|
case '4':
|
||||||
foreach($lines2 as $k => $lines_attributes)
|
foreach($lines2 as $k => $lines_attributes)
|
||||||
{
|
{
|
||||||
|
$ref = array();
|
||||||
|
$decli = array();
|
||||||
|
foreach ($lines_attributes as $key => $row) {
|
||||||
|
$ref[$key] = $row['line']['product_reference'];
|
||||||
|
$decli[$key] = $row['line']['product_attribute_name_base'];
|
||||||
|
}
|
||||||
|
array_multisort($ref, SORT_ASC, $decli, SORT_ASC, $lines_attributes);
|
||||||
foreach($lines_attributes as $key => $values)
|
foreach($lines_attributes as $key => $values)
|
||||||
{
|
{
|
||||||
// si le produit n'apparait pas dans une commande, on affiche pas la ligne
|
// si le produit n'apparait pas dans une commande, on affiche pas la ligne
|
||||||
|
Loading…
Reference in New Issue
Block a user