407 lines
24 KiB
PHP
407 lines
24 KiB
PHP
<?php
|
|
if(!defined('_PS_VERSION_')) {
|
|
exit;
|
|
}
|
|
|
|
class AdminBraderie extends AdminTab
|
|
{
|
|
private $_html = '';
|
|
private $error = '';
|
|
|
|
public function display()
|
|
{
|
|
global $cookie;
|
|
|
|
$this->_html .= '<style type="text/css">
|
|
@import "'.__PS_BASE_URI__.'css/custom_admin.css";
|
|
</style>';
|
|
|
|
$id_category = Tools::getValue('id_category', 1);
|
|
$id_product = Tools::getValue('id_product', false);
|
|
|
|
$db = Db::getInstance();
|
|
/*$sql_category = '
|
|
SELECT * FROM `'._DB_PREFIX_.'privatesale` ps
|
|
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON ps.`id_category` = cl.`id_category`
|
|
WHERE ps.`braderie` = 1
|
|
AND cl.`id_lang` = '.(int) $cookie->id_lang;*/
|
|
$sql_category = '
|
|
SELECT c.`id_category`, cl.`name` FROM `'._DB_PREFIX_.'category` c
|
|
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl ON c.`id_category` = cl.`id_category`
|
|
WHERE c.`id_parent` = 1
|
|
AND cl.`id_lang` = '.(int) $cookie->id_lang.'
|
|
ORDER BY c.`id_category` DESC';
|
|
$categories = $db->ExecuteS($sql_category);
|
|
|
|
$ids_categories = array();
|
|
foreach ($categories as $key => $category) {
|
|
$ids_categories[] = (int) $category["id_category"];
|
|
}
|
|
|
|
$small_titles = array();
|
|
foreach (Db::getInstance()->executeS('
|
|
SELECT ex.`value`, ps.`id_category`
|
|
FROM `'._DB_PREFIX_.'privatesale_extrafield_sale` ex
|
|
LEFT JOIN `'._DB_PREFIX_.'privatesale` ps on ex.`id_sale` = ps.`id_sale`
|
|
LEFT JOIN `'._DB_PREFIX_.'category` c on c.`id_category` = ps.`id_category`
|
|
WHERE ex.`id_field` = 1
|
|
AND ex.`id_lang` = '. (int) $cookie->id_lang.'
|
|
AND c.`id_category` IN ('.implode(',', $ids_categories).')
|
|
') as $key => $data) {
|
|
$small_titles[(int) $data['id_category']] = $data['value'];
|
|
}
|
|
|
|
$this->_html .= $this->_buildHtmlCategoryBlock($categories, $small_titles);
|
|
|
|
$this->_html .= '<link type="text/css" rel="stylesheet" href="'._MODULE_DIR_.'bulkupdate/chosen.min.css" />';
|
|
$this->_html .= '<script type="text/javascript" src="'._MODULE_DIR_.'bulkupdate/chosen.jquery.min.js"></script>';
|
|
$this->_html .= '<script type="text/javascript">
|
|
$(function() {
|
|
|
|
$(".chosen-select").chosen(
|
|
{
|
|
allow_single_deselect:true,
|
|
placeholder_text_single : "Choisir une vente",
|
|
no_results_text : "Aucun résultat",
|
|
enable_split_word_search : true,
|
|
search_contains : true,
|
|
}
|
|
);
|
|
|
|
var $token = "'.Tools::getAdminToken('AdminCatalog'.(int)(Tab::getIdFromClassName('AdminCatalog')).(int)($cookie->id_employee)).'";
|
|
var $product_id = 0;
|
|
|
|
$(\'#sale\').change(function() {
|
|
$.ajax({
|
|
type: \'POST\',
|
|
url: \''._MODULE_DIR_.'braderie/ajax.php?action=getCategories'.'\',
|
|
dataType: \'json\',
|
|
data: { sale: $(this).val() },
|
|
success: function(response) {
|
|
$(\'#category\').empty();
|
|
for (var i in response) {
|
|
var html = \'<option value="\'+ response[i].id_category +\'">\'+ response[i].id_category +\' - \'+ response[i].name +\'</option>\';
|
|
$(\'#category\').append(html);
|
|
}
|
|
$(".chosen-select").trigger("chosen:updated");
|
|
$("#divider, #category_input_group, #ean_input_group, #storage_input_group, #button_input_group, #show_current_category_button, #quantity_input_group").show();
|
|
$("#error").empty();
|
|
},
|
|
error: function(xhr) {
|
|
$("#ean_from_product").empty();
|
|
$("#error").empty().append(JSON.parse(xhr.responseText));
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#category").change(function(event) {
|
|
$("#show_current_category_button").show();
|
|
});
|
|
|
|
$("#input_ean").change(function(event) {
|
|
$.ajax({
|
|
type: \'POST\',
|
|
url: \''._MODULE_DIR_.'braderie/ajax.php?action=getProductId'.'\',
|
|
dataType: \'json\',
|
|
data: { ean: $(this).val() },
|
|
success: function(response) {
|
|
if (response.name == null) {
|
|
$("#error").empty().append("'.$this->l('Aucun produit n\'a été trouvé. Vérifier le code EAN').'");
|
|
$("#ean_from_product").empty();
|
|
return false;
|
|
}
|
|
|
|
$product_id = response.id_product;
|
|
$attibute_id = response.id_product_attribute;
|
|
if (response.id_image == null) {
|
|
image = \'\';
|
|
} else {
|
|
image = \'<img src="'._THEME_PROD_DIR_.'\'+response.img_path+\'-small.jpg" />\';
|
|
}
|
|
if (response.attribute_name) {
|
|
$("#ean_from_product").empty().append(image+"<p>"+response.name+" - "+response.attribute_name+"</p>");
|
|
} else {
|
|
$("#ean_from_product").empty().append(image+"<p>"+response.name+"</p>");
|
|
}
|
|
if ($attibute_id) {
|
|
$("#hidden_attribute_id").val($attibute_id);
|
|
} else {
|
|
$("#hidden_attribute_id").val(0);
|
|
}
|
|
$("#hidden_product_id").val($product_id);
|
|
if(response.comments != null){
|
|
tinymce.activeEditor.setContent(response.comments);
|
|
} else {
|
|
tinymce.activeEditor.setContent("");
|
|
}
|
|
$("#comment_input_group").show();
|
|
$("#error").empty();
|
|
$("#input_storage").focus();
|
|
},
|
|
error: function(xhr) {
|
|
$("#ean_from_product").empty();
|
|
$("#input_comment").val("");
|
|
$("#comment_input_group").hide();
|
|
$("#error").empty().append(JSON.parse(xhr.responseText));
|
|
}
|
|
});
|
|
});
|
|
|
|
$("#check_button").click(function(event) {
|
|
|
|
if ($product_id == undefined || $product_id == 0) {
|
|
$("#error").empty().append("'.$this->l('Aucun produit n\'a été trouvé. Vérifier le code EAN').'");
|
|
return false;
|
|
}
|
|
|
|
if ($token.length == 0) {
|
|
$("#error").empty().append("'.$this->l('Un problème de sécurité est survenu. Merci de réinitialisé la page').'");
|
|
return false;
|
|
}
|
|
|
|
window.open("?tab=AdminCatalog&updateproduct&id_product=" + $product_id + "&token=" + $token);
|
|
return false;
|
|
});
|
|
|
|
$("#input_storage").change(function(event) {
|
|
event.preventDefault();
|
|
if ($product_id == undefined || $product_id == 0) {
|
|
$("#error").empty().append("'.$this->l('Aucun produit n\'a été trouvé. Vérifier le code EAN').'");
|
|
return false;
|
|
}
|
|
|
|
var emplacement = $("#input_storage").val();
|
|
|
|
if (emplacement.length == 0 || emplacement>505) {
|
|
$("#error").empty().append("'.$this->l('L\'emplacement n\'est pas renseigné ou est mal renseigné').'");
|
|
return false;
|
|
}
|
|
|
|
if ($("#input_quantity").val().length == 0) {
|
|
$("#error").empty().append("'.$this->l('La quantité n\'est pas renseignée').'");
|
|
return false;
|
|
}
|
|
|
|
$("#hidden_product_id").val($product_id);
|
|
$.ajax({
|
|
type: \'POST\',
|
|
url: \''._MODULE_DIR_.'braderie/ajax.php?action=addToSellout'.'\',
|
|
dataType: \'json\',
|
|
data: {
|
|
parent_category: $("#sale").val(),
|
|
category: $("#category").val(),
|
|
ean: $("#input_ean").val(),
|
|
storage: $("#input_storage").val(),
|
|
product: $("#hidden_product_id").val(),
|
|
quantity: $("#input_quantity").val(),
|
|
attribute: $("#hidden_attribute_id").val(),
|
|
comment: tinymce.activeEditor.getContent()
|
|
},
|
|
success: function(response) {
|
|
$("#error").empty().append(response);
|
|
$("#input_ean, #input_storage").val("");
|
|
$("#comment_input_group").hide();
|
|
$("#input_quantity").val(1);
|
|
$("#ean_from_product").empty();
|
|
$("#input_ean").focus();
|
|
},
|
|
error: function(xhr) {
|
|
$("#error").empty().append(JSON.parse(xhr.responseText));
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
|
|
// $("#formBraderie").submit(function(){
|
|
// return false;
|
|
// });
|
|
|
|
$("#add_button").click(function(event) {
|
|
event.preventDefault();
|
|
return false;
|
|
|
|
if ($product_id == undefined || $product_id == 0) {
|
|
$("#error").empty().append("'.$this->l('Aucun produit n\'a été trouvé. Vérifier le code EAN').'");
|
|
return false;
|
|
}
|
|
|
|
var emplacement = $("#input_storage").val();
|
|
|
|
if (emplacement.length == 0 || emplacement>505) {
|
|
$("#error").empty().append("'.$this->l('L\'emplacement n\'est pas renseigné ou est mal renseigné').'");
|
|
return false;
|
|
}
|
|
|
|
if ($("#input_quantity").val().length == 0) {
|
|
$("#error").empty().append("'.$this->l('La quantité n\'est pas renseignée').'");
|
|
return false;
|
|
}
|
|
|
|
$("#hidden_product_id").val($product_id);
|
|
|
|
$.ajax({
|
|
type: \'POST\',
|
|
url: \''._MODULE_DIR_.'braderie/ajax.php?action=addToSellout'.'\',
|
|
dataType: \'json\',
|
|
data: {
|
|
parent_category: $("#sale").val(),
|
|
category: $("#category").val(),
|
|
ean: $("#input_ean").val(),
|
|
storage: $("#input_storage").val(),
|
|
product: $("#hidden_product_id").val(),
|
|
quantity: $("#input_quantity").val(),
|
|
attribute: $("#hidden_attribute_id").val()
|
|
},
|
|
success: function(response) {
|
|
$("#error").empty().append(response);
|
|
$("#input_ean, #input_storage").val("");
|
|
$("#ean_from_product").empty();
|
|
},
|
|
error: function(xhr) {
|
|
$("#error").empty().append(JSON.parse(xhr.responseText));
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
|
|
$("#show_current_category_button").click(function() {
|
|
$category = $("#category").val();
|
|
if ($category.length == 0) {
|
|
$("#error").empty().append("'.$this->l('Catégorie invalide').'");
|
|
return false;
|
|
}
|
|
window.open("?tab=AdminCatalog&viewcategory&id_category=" + $category + "&token=" + $token, "_blank");
|
|
return false;
|
|
});
|
|
|
|
});
|
|
</script>';
|
|
$iso = Language::getIsoById((int)($cookie->id_lang));
|
|
$isoTinyMCE = (file_exists(_PS_ROOT_DIR_.'/js/tiny_mce/langs/'.$iso.'.js') ? $iso : 'en');
|
|
$ad = dirname($_SERVER["PHP_SELF"]);
|
|
$this->_html.= '
|
|
<script type="text/javascript">
|
|
var iso = \''.$isoTinyMCE.'\' ;
|
|
var pathCSS = \''._THEME_CSS_DIR_.'\' ;
|
|
var ad = \''.$ad.'\' ;
|
|
</script>
|
|
<script type="text/javascript" src="'.__PS_BASE_URI__.'js/tiny_mce/tiny_mce.js"></script>
|
|
<script type="text/javascript" src="'.__PS_BASE_URI__.'js/tinymce.inc.js"></script>
|
|
<script type="text/javascript">
|
|
// other_textarea different config
|
|
$(function() {
|
|
tinymce.init({
|
|
mode : "specific_textareas",
|
|
theme : "advanced",
|
|
skin:"cirkuit",
|
|
editor_selector : "other_textarea",
|
|
editor_deselector : "noEditor",
|
|
plugins : "safari,pagebreak,style,table,advimage,advlink,inlinepopups,media,contextmenu,paste,fullscreen,xhtmlxtras,preview",
|
|
// Theme options
|
|
theme_advanced_buttons1 : "newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
|
|
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,,|,forecolor,backcolor",
|
|
theme_advanced_buttons3 : "",
|
|
theme_advanced_buttons4 : "",
|
|
theme_advanced_toolbar_location : "top",
|
|
theme_advanced_toolbar_align : "left",
|
|
theme_advanced_statusbar_location : "bottom",
|
|
theme_advanced_resizing : false,
|
|
content_css : pathCSS+"global.css",
|
|
document_base_url : ad,
|
|
width: "200",
|
|
height: "200",
|
|
font_size_style_values : "8pt, 10pt, 12pt, 14pt, 18pt, 24pt, 36pt",
|
|
elements : "nourlconvert,ajaxfilemanager",
|
|
file_browser_callback : "ajaxfilemanager",
|
|
entity_encoding: "raw",
|
|
convert_urls : false,
|
|
language : iso,
|
|
extended_valid_elements: "iframe[src,width,height,frameborder,marginwidth,marginheight],script[type,src]",
|
|
});
|
|
});
|
|
</script>';
|
|
echo $this->_html;
|
|
}
|
|
|
|
private function _buildHtmlCategoryBlock($categories, $small_titles)
|
|
{
|
|
global $cookie;
|
|
|
|
$token = Tools::getAdminToken('AdminBraderie'.(int)(Tab::getIdFromClassName('AdminBraderie')).(int)($cookie->id_employee));
|
|
|
|
$html = '
|
|
<style>
|
|
.chosen-container { width: 315px !important; }
|
|
.button-container input { margin: 10px 25px; }
|
|
#ean_from_product {
|
|
background-color: rgba(86,84,133,0.7);
|
|
color:#fff;
|
|
margin-top: 5px;
|
|
}
|
|
#ean_from_product p{width: 330px;text-align: center;}
|
|
#ean_from_product p,#ean_from_product img{
|
|
display:inline-block;
|
|
vertical-align:middle;
|
|
margin: 5px;
|
|
}
|
|
#error, #ean_from_product { margin-left: 205px; width: 445px;}
|
|
#error { font-weight: bold; margin-bottom: 20px; color: #CC0000; }
|
|
.margin-form {padding: 0 0 1em 10px;}
|
|
</style>
|
|
<fieldset>
|
|
<legend>'.$this->l('Braderie').'</legend>
|
|
<form id="formBraderie" action="?tab=AdminBraderie&token='.$token.'" method="POST">';
|
|
if ($this->error) {
|
|
$html .= '<p class="margin-form" id="error">'.$this->error.'</p>';
|
|
} else {
|
|
$html .= '<p class="margin-form" id="error">'.$this->error.'</p>';
|
|
}
|
|
$html .='<div class="margin-form" id="ean_input_group" style="display: none;">
|
|
<label>'.$this->l('Code EAN').' : </label>
|
|
<input type="text" name="ean" id="input_ean">
|
|
<div id="ean_from_product"></div>
|
|
</div>
|
|
<hr id="divider" style="display: none;">';
|
|
$html .= '<div class="margin-form">
|
|
<label>'.$this->l('Ventes').' : </label>
|
|
<select class="chosen-select" id="sale" name="sale">
|
|
<option value=""></option>';
|
|
|
|
foreach ($categories as $key => $value) {
|
|
$html .= '<option value="'.$value['id_category'].'">'.$value['id_category'].' - '.$value['name'].(!empty($small_titles[(int)$value['id_category']])?' - '.$small_titles[(int)$value['id_category']]:'').'</option>';
|
|
}
|
|
|
|
$html .= ' </select>
|
|
</div>
|
|
<div class="margin-form" id="category_input_group" style="display: none;">
|
|
<label>'.$this->l('Catégories').' : </label>
|
|
<select class="chosen-select" id="category" name="category">
|
|
<option value=""></option>
|
|
</select>
|
|
<a href="?tab=AdminCatalog" class="button" id="show_current_category_button" style="margin-left: 20px; display: none">'.$this->l('Voir cette catégorie').'</a>
|
|
</div>
|
|
<div class="margin-form" id="quantity_input_group" style="display: none;">
|
|
<label>'.$this->l('Quantité').' : </label>
|
|
<input type="number" name="quantity" id="input_quantity" value="1">
|
|
</div>
|
|
<div class="margin-form" id="storage_input_group" style="display: none;">
|
|
<label>'.$this->l('Emplacement').' : </label>
|
|
<input type="text" name="storage" id="input_storage">
|
|
</div>
|
|
<div class="margin-form" id="comment_input_group" style="display: none;">
|
|
<label>'.$this->l('Commentaires').' : </label>
|
|
<textarea class="other_textarea" cols="49" rows="3" id="input_comment" name="input_comment"></textarea>
|
|
</div>
|
|
<div class="margin-form button-container" id="button_input_group" style="display: none;">
|
|
<input type="submit" class="button" name="adminbraderie" value="'.$this->l('Ajouter').'" style="margin-left: 200px;" id="add_button">
|
|
<input type="submit" class="button" id="check_button" value="'.$this->l('Vérifier').'">
|
|
</div>
|
|
<input type="hidden" name="product" id="hidden_product_id">
|
|
<input type="hidden" name="attribute" id="hidden_attribute_id">
|
|
</form>
|
|
</fieldset>';
|
|
return $html;
|
|
}
|
|
|
|
}
|