// 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} {if $product.customizedDatas}
<tr class="customized customized-{$product.id_order_detail}"> <tr class="customized customized-{$product.id_order_detail}">
<input type="hidden" class="edit_product_id_order_detail" value="{$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> <td>
<a href="index.php?controller=adminproducts&id_product={$product['product_id']}&updateproduct&token={getAdminToken tab='AdminProducts'}"> <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 /> <span class="productName">{$product['product_name']} - {l s='customized'}</span><br />
@@ -139,7 +139,7 @@
$('.delete_product').live('click', function(e) { $('.delete_product').live('click', function(e) {
e.preventDefault(); e.preventDefault();
var to_delete = $(this).attr('rel').split('_'); 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) { $('.delete_discount').live('click', function(e) {
e.preventDefault(); e.preventDefault();
@@ -184,7 +184,7 @@
if ($(this).val() != cart_quantity[$(this).attr('rel')]) if ($(this).val() != cart_quantity[$(this).attr('rel')])
{ {
var product = $(this).attr('rel').split('_'); 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) { $('.increaseqty_product, .decreaseqty_product').live('click', function(e) {
@@ -193,7 +193,7 @@
var sign = ''; var sign = '';
if ($(this).hasClass('decreaseqty_product')) if ($(this).hasClass('decreaseqty_product'))
sign = '-'; sign = '-';
updateQty(product[0], product[1], sign+1); updateQty(product[0], product[1],product[2], sign+1);
}); });
$('#id_product').live('keydown', function(e) { $('#id_product').live('keydown', function(e) {
$(this).click(); $(this).click();
@@ -396,7 +396,7 @@
}); });
} }
function deleteProduct(id_product, id_product_attribute) function deleteProduct(id_product, id_product_attribute, id_customization)
{ {
$.ajax({ $.ajax({
type:"POST", type:"POST",
@@ -410,6 +410,7 @@
action: "deleteProduct", action: "deleteProduct",
id_product: id_product, id_product: id_product,
id_product_attribute: id_product_attribute, id_product_attribute: id_product_attribute,
id_customization: id_customization,
id_cart: id_cart, id_cart: id_cart,
id_customer: id_customer id_customer: id_customer
}, },
@@ -640,9 +641,9 @@
$.each(products, function() { $.each(products, function() {
cart_quantity[this.id_product+'_'+this.id_product_attribute] = this.cart_quantity; 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 += '<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;"><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+'" class="cart_quantity" size="2" value="'+this.cart_quantity+'" />'; 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+'" ><img src="../img/admin/delete.gif" /></a>'; 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>'; cart_content += '</div></td><td>'+this.total+'&nbsp;<span class="currency_sign"></span></td></tr>';
}); });
$('#customer_cart tbody').html(cart_content); $('#customer_cart tbody').html(cart_content);
@@ -671,8 +672,7 @@
function displaySummary(jsonSummary) function displaySummary(jsonSummary)
{ {
if (jsonSummary.summary.products.length) updateCartProducts(jsonSummary.summary.products);
updateCartProducts(jsonSummary.summary.products);
updateCartVouchers(jsonSummary.summary.discounts); updateCartVouchers(jsonSummary.summary.discounts);
updateAddressesList(jsonSummary.addresses, jsonSummary.cart.id_address_delivery, jsonSummary.cart.id_address_invoice); updateAddressesList(jsonSummary.addresses, jsonSummary.cart.id_address_delivery, jsonSummary.cart.id_address_invoice);
@@ -720,7 +720,7 @@
resetBind(); resetBind();
} }
function updateQty(id_product, id_product_attribute, qty) function updateQty(id_product, id_product_attribute, id_customization, qty)
{ {
$.ajax({ $.ajax({
type:"POST", type:"POST",
@@ -734,6 +734,7 @@
action: "updateQty", action: "updateQty",
id_product: id_product, id_product: id_product,
id_product_attribute: id_product_attribute, id_product_attribute: id_product_attribute,
id_customization: id_customization,
qty: qty, qty: qty,
id_customer: id_customer, id_customer: id_customer,
id_cart: id_cart, id_cart: id_cart,
@@ -771,7 +772,7 @@
else else
{ {
$('#products_err').hide(); $('#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->select('cu.`id_customization`, cu.`quantity` AS customization_quantity');
$sql->leftJoin('customization', 'cu', $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 else
$sql->select('0 AS customization_quantity, 0 AS id_customization'); $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'); $errors[] = Tools::displayError('Invalid combination');
if (count($errors)) if (count($errors))
die(Tools::jsonEncode($errors)); die(Tools::jsonEncode($errors));
if ($this->context->cart->deleteProduct($id_product, $id_product_attribute, (int)Tools::getValue('id_customization')))
if ($this->context->cart->deleteProduct($id_product, $id_product_attribute))
echo Tools::jsonEncode($this->ajaxReturnVars()); echo Tools::jsonEncode($this->ajaxReturnVars());
} }
} }
@@ -254,7 +253,7 @@ class AdminCartsControllerCore extends AdminController
$field_id = 'customization_'.$id_product.'_'.$customization_field['id_customization_field']; $field_id = 'customization_'.$id_product.'_'.$customization_field['id_customization_field'];
if ($customization_field['type'] == Product::CUSTOMIZE_TEXTFIELD) 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']) if ($customization_field['required'])
$errors[] = Tools::displayError('Please fill in all required fields'); $errors[] = Tools::displayError('Please fill in all required fields');