// Fix various bugs with customized products in backoffice order

This commit is contained in:
rGaillard
2012-07-19 12:26:04 +00:00
parent 311f23427d
commit 668cc4c02e
4 changed files with 16 additions and 16 deletions
@@ -26,7 +26,7 @@
{if $product.customizedDatas}
<tr class="customized customized-{$product.id_order_detail}">
<input type="hidden" class="edit_product_id_order_detail" value="{$product.id_order_detail}" />
<td align="center">{if isset($product.image) && $product.image->id}{$product.image_tag}{else}'--'{/if}</td>
<td align="center">{if isset($product.image) && $product.image->id}{$product.image_tag}{else}--{/if}</td>
<td>
<a href="index.php?controller=adminproducts&id_product={$product['product_id']}&updateproduct&token={getAdminToken tab='AdminProducts'}">
<span class="productName">{$product['product_name']} - {l s='customized'}</span><br />
@@ -139,7 +139,7 @@
$('.delete_product').live('click', function(e) {
e.preventDefault();
var to_delete = $(this).attr('rel').split('_');
deleteProduct(to_delete[1], to_delete[2]);
deleteProduct(to_delete[1], to_delete[2], to_delete[3]);
});
$('.delete_discount').live('click', function(e) {
e.preventDefault();
@@ -184,7 +184,7 @@
if ($(this).val() != cart_quantity[$(this).attr('rel')])
{
var product = $(this).attr('rel').split('_');
updateQty(product[0], product[1], $(this).val() - cart_quantity[$(this).attr('rel')]);
updateQty(product[0], product[1], product[2], $(this).val() - cart_quantity[$(this).attr('rel')]);
}
});
$('.increaseqty_product, .decreaseqty_product').live('click', function(e) {
@@ -193,7 +193,7 @@
var sign = '';
if ($(this).hasClass('decreaseqty_product'))
sign = '-';
updateQty(product[0], product[1], sign+1);
updateQty(product[0], product[1],product[2], sign+1);
});
$('#id_product').live('keydown', function(e) {
$(this).click();
@@ -396,7 +396,7 @@
});
}
function deleteProduct(id_product, id_product_attribute)
function deleteProduct(id_product, id_product_attribute, id_customization)
{
$.ajax({
type:"POST",
@@ -410,6 +410,7 @@
action: "deleteProduct",
id_product: id_product,
id_product_attribute: id_product_attribute,
id_customization: id_customization,
id_cart: id_cart,
id_customer: id_customer
},
@@ -640,9 +641,9 @@
$.each(products, function() {
cart_quantity[this.id_product+'_'+this.id_product_attribute] = this.cart_quantity;
cart_content += '<tr><td><img src="'+this.image_link+'" title="'+this.name+'" /></td><td>'+this.name+'<br />'+this.attributes_small+'</td><td>'+this.reference+'</td><td><input type="text" size="7" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="product_unit_price" value="'+this.price+'" />&nbsp;<span class="currency_sign"></span></td><td>';
cart_content += '<div style="float:left;"><a href="#" class="increaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'" ><img src="../img/admin/up.gif" /></a><br /><a href="#" class="decreaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'"><img src="../img/admin/down.gif" /></a></div>';
cart_content += '<div style="float:left;"><input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'" class="cart_quantity" size="2" value="'+this.cart_quantity+'" />';
cart_content += '<a href="#" class="delete_product" rel="delete_'+this.id_product+'_'+this.id_product_attribute+'" ><img src="../img/admin/delete.gif" /></a>';
cart_content += '<div style="float:left;"><a href="#" class="increaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/up.gif" /></a><br /><a href="#" class="decreaseqty_product" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'"><img src="../img/admin/down.gif" /></a></div>';
cart_content += '<div style="float:left;"><input type="text" rel="'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" class="cart_quantity" size="2" value="'+this.cart_quantity+'" />';
cart_content += '<a href="#" class="delete_product" rel="delete_'+this.id_product+'_'+this.id_product_attribute+'_'+(this.id_customization ? this.id_customization : 0)+'" ><img src="../img/admin/delete.gif" /></a>';
cart_content += '</div></td><td>'+this.total+'&nbsp;<span class="currency_sign"></span></td></tr>';
});
$('#customer_cart tbody').html(cart_content);
@@ -671,8 +672,7 @@
function displaySummary(jsonSummary)
{
if (jsonSummary.summary.products.length)
updateCartProducts(jsonSummary.summary.products);
updateCartProducts(jsonSummary.summary.products);
updateCartVouchers(jsonSummary.summary.discounts);
updateAddressesList(jsonSummary.addresses, jsonSummary.cart.id_address_delivery, jsonSummary.cart.id_address_invoice);
@@ -720,7 +720,7 @@
resetBind();
}
function updateQty(id_product, id_product_attribute, qty)
function updateQty(id_product, id_product_attribute, id_customization, qty)
{
$.ajax({
type:"POST",
@@ -734,6 +734,7 @@
action: "updateQty",
id_product: id_product,
id_product_attribute: id_product_attribute,
id_customization: id_customization,
qty: qty,
id_customer: id_customer,
id_cart: id_cart,
@@ -771,7 +772,7 @@
else
{
$('#products_err').hide();
updateQty(id_product, $('#ipa_'+id_product+' option:selected').val(), $('#qty').val());
updateQty(id_product, $('#ipa_'+id_product+' option:selected').val(), 0, $('#qty').val());
}
}
+1 -1
View File
@@ -471,7 +471,7 @@ class CartCore extends ObjectModel
{
$sql->select('cu.`id_customization`, cu.`quantity` AS customization_quantity');
$sql->leftJoin('customization', 'cu',
'p.`id_product` = cu.`id_product` AND cp.`id_product_attribute` = cu.id_product_attribute');
'p.`id_product` = cu.`id_product` AND cp.`id_product_attribute` = cu.id_product_attribute AND cu.id_cart='.(int)$this->id);
}
else
$sql->select('0 AS customization_quantity, 0 AS id_customization');
+2 -3
View File
@@ -233,8 +233,7 @@ class AdminCartsControllerCore extends AdminController
$errors[] = Tools::displayError('Invalid combination');
if (count($errors))
die(Tools::jsonEncode($errors));
if ($this->context->cart->deleteProduct($id_product, $id_product_attribute))
if ($this->context->cart->deleteProduct($id_product, $id_product_attribute, (int)Tools::getValue('id_customization')))
echo Tools::jsonEncode($this->ajaxReturnVars());
}
}
@@ -254,7 +253,7 @@ class AdminCartsControllerCore extends AdminController
$field_id = 'customization_'.$id_product.'_'.$customization_field['id_customization_field'];
if ($customization_field['type'] == Product::CUSTOMIZE_TEXTFIELD)
{
if (!isset($_POST[$field_id]))
if (!isset($_POST[$field_id]) || empty($_POST[$field_id]))
{
if ($customization_field['required'])
$errors[] = Tools::displayError('Please fill in all required fields');