Новосибирск +7(983)

По всем вопросам :

Телеграм : @radgura

Joomshoping - Объединение заказов

Возникла необходимость объеденить заказы одного или нескольких человек в один, причем со сложением одинаковых товаров - по ид, артикулу, атрибуту, но стоимость брать минимальную по списку.

Для начала добавим кнопку "Объеденение" в файле:

administrator/components/com_jshopping/view/orders/view.html.php

Добавляем кнопку:

class JshoppingViewOrders extends JViewLegacy{ function displayList($tpl=null){  JToolBarHelper::title(_JSHOP_ORDER_LIST, 'generic.png'); JToolBarHelper::addNew(); JToolBarHelper::deleteList(_JSHOP_DELETE."?"); JToolBarHelper::link('', 'Объеденить', 'mergeorderbtn'); parent::display($tpl); }

Далее в файле :

administrator/components/com_jshopping/view/orders/tmpl/list.php

Реализуем Ajax запросы и форму для объеденения и стили, просто добавив код:

<input type="hidden" id="siteurl" value="<?php echo JURI::root()?>">
<input type="hidden" id="scripturl" value="<?php echo JURI::root()?>administrator/index.php?option=com_jshopping&controller=orders">
<div class="radworkpanel" style="display:none"><div id="radworkpanel" ></div></div>
<script>
function get_sel_value(elem_id,nullval="")
{
var sel = document.getElementById(elem_id); var str='';
if (sel.options==null) return nullval;
else
{
for (var i = 0; i < sel.options.length; i++){if (sel.options[i].selected) str=str+sel.options[i].value+',';}
str=str.substring(0, str.length - 1);
return str;
}
}
function get_check_value(names)
{
var str='';
jQuery('.'+names).each(function(){
if (this.checked===true) str=str+this.id+',';
});
if (str!='') str=str.substring(0, str.length - 1);
return str;
}
jQuery(document).ready(function() {
document.querySelectorAll('#toolbar-mergeorderbtn button').forEach(el => el.removeAttribute('onclick'));
jQuery("body").on("click", ".closemerge", function(e){
jQuery('.radworkpanel').hide();
document.getElementById('radworkpanel').innerHTML='';
});
jQuery("body").on("click", ".makemergecancel", function(e){
jQuery('.radworkpanel').hide();
document.getElementById('radworkpanel').innerHTML='';
});
jQuery("body").on("click", ".chagenav", function(e){
var ids=this.id;
jQuery('.chagenav').removeClass('active');
jQuery('.chagenav_'+ids).addClass('active');
jQuery('.tab-pane').removeClass('active');
jQuery('#gtab'+ids).addClass('active');
});
jQuery("body").on("click", ".chagenav", function(e){
return false;
});
jQuery(document.body).on('change', '#orderdest', function (event)
{
var myData = 'orderdest='+document.getElementById('orderdest').value
+'&cid='+document.getElementById('radcids').value;
if (document.getElementById('reloadrestable')!=null) document.getElementById('reloadrestable').innerHTML='<img src="'+document.getElementById('siteurl').value+'administrator/components/com_jshopping/views/orders/tmpl/load2.gif" style="max-height:20px;">';
jQuery.ajax({
type: "POST",
url: document.getElementById('scripturl').value,
dataType:"text",
data:myData,
success:function(response)
{
document.getElementById('resulttablediv').innerHTML=response;
if (document.getElementById('reloadrestable')!=null)document.getElementById('reloadrestable').innerHTML='';
jQuery('.reloadsql').click();
},
error:function (xhr, ajaxOptions, thrownError){alert(thrownError);}
});
});
jQuery(document.body).on('click', '.reloadsql', function (event)
{
var myData = 'reloadsql='+document.getElementById('orderdest').value
+'&cid='+document.getElementById('radcids').value;
if (document.getElementById('gtab3')!=null) document.getElementById('gtab3').innerHTML='<img src="'+document.getElementById('siteurl').value+'administrator/components/com_jshopping/views/orders/tmpl/load2.gif" style="max-height:20px;">';
jQuery.ajax({
type: "POST",
url: document.getElementById('scripturl').value,
dataType:"text",
data:myData,
success:function(response)
{
document.getElementById('gtab3').innerHTML=response;
},
error:function (xhr, ajaxOptions, thrownError){alert(thrownError);}
});
});
jQuery(document.body).on('click', '.refreshpdf', function (event)
{
var myData = 'refreshpdf='+document.getElementById('orderdest').value;
jQuery.ajax({
type: "POST",
url: document.getElementById('scripturl').value,
dataType:"text",
data:myData,
success:function(response)
{
},
error:function (xhr, ajaxOptions, thrownError){alert(thrownError);}
});
});
jQuery(document.body).on('click', '.makemerge', function (event)
{
var myData = 'makemerge='+document.getElementById('orderdest').value
+'&cid='+document.getElementById('radcids').value;
if (document.getElementById('reloadrestable')!=null) document.getElementById('reloadrestable').innerHTML='<img src="'+document.getElementById('siteurl').value+'administrator/components/com_jshopping/views/orders/tmpl/load2.gif" style="max-height:20px;">';
jQuery.ajax({
type: "POST",
url: document.getElementById('scripturl').value,
dataType:"text",
data:myData,
success:function(response)
{
jQuery('.refreshpdf').click();
location.reload();
},
error:function (xhr, ajaxOptions, thrownError){alert(thrownError);}
});
});
jQuery(document.body).on('click', '#toolbar-mergeorderbtn button', function (event)
{
if (document.adminForm.boxchecked.value <2)
{ alert('Пожалуйста, выберите объекты из списка!'); }
else
{
var favorite = [];jQuery("input[name='cid[]']:checked").each(function(){favorite.push(jQuery(this).val());});
var cids=favorite.join(", ");
var myData = 'showmergeorder='+cids;
document.getElementById('radworkpanel').innerHTML='<img src="'+document.getElementById('siteurl').value+'administrator/components/com_jshopping/views/orders/tmpl/load2.gif" style="max-height:25px;margin-left:50%;">';
jQuery('.radworkpanel').show();
jQuery.ajax({
type: "POST",
url: document.getElementById('scripturl').value,
dataType:"text",
data:myData,
success:function(response)
{
document.getElementById('radworkpanel').innerHTML=response;
},
error:function (xhr, ajaxOptions, thrownError){alert(thrownError);}
});
}
return false;
});
});
</script>

Добавим обработчик aJax запросов, можно разместить в файле list.php или view.html.php:

Доступ к этому контенту разрешен только участникам проекта.
Вы можете получить доступ,купив эту доработку
Итоговый объединённый заказ

 

Демонстрация

Комментарии (0)

Здесь ещё нет оставленных комментариев.

Оставьте свой комментарий

  1. Добавление комментария от гостя.
Вложения (0 / 3)
Share Your Location

Как с нами связаться

По всем вопросам пишите  

Телеграм: @radgura

OnLine заказ

Отправить сообщение

Нажимая на кнопку «Отправить сообщение», я соглашаюсь:
* с условиями публичной оферты
* обработку моих персональных данных


RAD компоненты

Please publish modules in offcanvas position.