[-] BO : #PSCFV-3011 - Add details of refund and returned products on the BO order page.

This commit is contained in:
mDeflotte
2012-07-05 07:40:11 +00:00
parent 5a28e22ae6
commit cc82ddf5cc
7 changed files with 117 additions and 5 deletions
+28
View File
@@ -499,3 +499,31 @@ ul.listForm li {padding-bottom:3px;}
.selected-line {background:#fff1b5;}
#changedFiles ul{list-style-type: square; padding-left: 40px;}
.tooltip { position: relative; }
.tooltip .tooltip_content {
z-index: 100;
text-align: left;
display: none;
white-space: nowrap;
position: absolute;
padding: 5px 5px;
background: black;
color: white;
box-shadow: 4px 4px 10px rgba(0, 0, 0, 0.5);
margin-top: 5px;
}
.tooltip .tooltip_label { cursor: pointer; }
.tooltip .title { text-align: center; padding-bottom: 5px; display: block; font-weight: bold }
.tooltip:hover .tooltip_content { display: block; }
.tooltip_button {
border: 1px solid silver;
border-radius: 3px;
padding: 0 3px;
background: -moz-linear-gradient(top, #ddd, #aaa);
background: -o-linear-gradient(top, #ddd, #aaa);
background: -webkit-linear-gradient(top, #ddd, #aaa);
background: linear-gradient(top, #ddd, #aaa);
color: #666
}
@@ -57,8 +57,38 @@
</span>
{/if}
</td>
{if ($order->hasBeenPaid())}<td align="center" class="productQuantity">{$product['product_quantity_refunded']}</td>{/if}
{if ($order->hasBeenDelivered())}<td align="center" class="productQuantity">{$product['product_quantity_return']}</td>{/if}
{if ($order->hasBeenPaid())}
<td align="center" class="productQuantity">
{$product['product_quantity_refunded']}
{if count($product['refund_history'])}
<span class="tooltip">
<span class="tooltip_label tooltip_button">+</span>
<div class="tooltip_content">
<span class="title">{l s='Refund history'}</span>
{foreach $product['refund_history'] as $refund}
{l s='%1s - %2s' sprintf=[{dateFormat date=$refund.date_add}, {displayPrice price=$refund.amount_tax_incl}]}<br />
{/foreach}
</div>
</span>
{/if}
</td>
{/if}
{if $order->hasBeenDelivered() || $order->hasProductReturned()}
<td align="center" class="productQuantity">
{$product['product_quantity_return']}
{if count($product['return_history'])}
<span class="tooltip">
<span class="tooltip_label tooltip_button">+</span>
<div class="tooltip_content">
<span class="title">{l s='Return history'}</span>
{foreach $product['return_history'] as $return}
{l s='%1s - %2s - %3s' sprintf=[{dateFormat date=$return.date_add}, $return.product_quantity, $return.state]}<br />
{/foreach}
</div>
</span>
{/if}
</td>
{/if}
<td align="center" class="productQuantity product_stock">{$product['current_stock']}</td>
<td align="center" class="total_product">
{displayPrice price=(Tools::ps_round($product_price, 2) * ($product['product_quantity'] - $product['customizationQuantityTotal'])) currency=$currency->id}
@@ -590,7 +590,7 @@
<th style="width: 15%; text-align: center">{l s='Unit Price'} <sup>*</sup></th>
<th style="width: 4%; text-align: center">{l s='Qty'}</th>
{if ($order->hasBeenPaid())}<th style="width: 3%; text-align: center">{l s='Refunded'}</th>{/if}
{if ($order->hasBeenDelivered())}<th style="width: 3%; text-align: center">{l s='Returned'}</th>{/if}
{if ($order->hasBeenDelivered() || $order->hasProductReturned())}<th style="width: 3%; text-align: center">{l s='Returned'}</th>{/if}
<th style="width: 10%; text-align: center">{l s='Available quantity'}</th>
<th style="width: 10%; text-align: center">{l s='Total'} <sup>*</sup></th>
<th colspan="2" style="display: none;" class="add_product_fields">&nbsp;</th>
+15
View File
@@ -755,6 +755,21 @@ class OrderCore extends ObjectModel
{
return count($this->getHistory((int)($this->id_lang), false, false, OrderState::FLAG_DELIVERY));
}
/**
* Has products returned by the merchant or by the customer?
*/
public function hasProductReturned()
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT IFNULL(SUM(ord.product_quantity), SUM(product_quantity_return))
FROM `'._DB_PREFIX_.'orders` o
INNER JOIN `'._DB_PREFIX_.'order_detail` od
ON od.id_order = o.id_order
LEFT JOIN `'._DB_PREFIX_.'order_return_detail` ord
ON ord.id_order_detail = od.id_order_detail
WHERE o.id_order = '.(int)$this->id);
}
public function hasBeenPaid()
{
+17
View File
@@ -199,5 +199,22 @@ class OrderReturnCore extends ObjectModel
{
return Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'order_return_detail` WHERE `id_order_detail` = '.(int)($id_order_detail).' AND `id_order_return` = '.(int)($id_order_return).' AND `id_customization` = '.(int)($id_customization));
}
/**
*
* Get return details for one product line
* @param $id_order_detail
*/
public static function getProductReturnDetail($id_order_detail)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT product_quantity, date_add, orsl.name as state
FROM `'._DB_PREFIX_.'order_return_detail` ord
LEFT JOIN `'._DB_PREFIX_.'order_return` o
ON o.id_order_return = ord.id_order_return
LEFT JOIN `'._DB_PREFIX_.'order_return_state_lang` orsl
ON orsl.id_order_return_state = o.state AND orsl.id_lang = '.(int)Context::getContext()->language->id.'
WHERE ord.`id_order_detail` = '.(int)$id_order_detail);
}
}
+22 -2
View File
@@ -99,7 +99,7 @@ class OrderSlipCore extends ObjectModel
ORDER BY `date_add` DESC');
}
public static function getOrdersSlipDetail($id_order_slip = true, $id_order_detail = false)
public static function getOrdersSlipDetail($id_order_slip = false, $id_order_detail = false)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS(
($id_order_detail ? 'SELECT SUM(`product_quantity`) AS `total`' : 'SELECT *').
@@ -141,7 +141,12 @@ class OrderSlipCore extends ObjectModel
}
return $order->getProducts($resTab);
}
/**
*
* Get resume of all refund for one product line
* @param $id_order_detail
*/
public static function getProductSlipResume($id_order_detail)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getRow('
@@ -149,6 +154,21 @@ class OrderSlipCore extends ObjectModel
FROM `'._DB_PREFIX_.'order_slip_detail`
WHERE `id_order_detail` = '.(int)$id_order_detail);
}
/**
*
* Get refund details for one product line
* @param $id_order_detail
*/
public static function getProductSlipDetail($id_order_detail)
{
return Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
SELECT product_quantity, amount_tax_excl, amount_tax_incl, date_add
FROM `'._DB_PREFIX_.'order_slip_detail` osd
LEFT JOIN `'._DB_PREFIX_.'order_slip` os
ON os.id_order_slip = osd.id_order_slip
WHERE osd.`id_order_detail` = '.(int)$id_order_detail);
}
public function getProducts()
{
@@ -1251,6 +1251,8 @@ class AdminOrdersControllerCore extends AdminController
$product['quantity_refundable'] = $product['product_quantity'] - $resume['product_quantity'];
$product['amount_refundable'] = $product['total_price_tax_incl'] - $resume['amount_tax_incl'];
$product['amount_refund'] = Tools::displayPrice($resume['amount_tax_incl']);
$product['refund_history'] = OrderSlip::getProductSlipDetail($product['id_order_detail']);
$product['return_history'] = OrderReturn::getProductReturnDetail($product['id_order_detail']);
// if the current stock requires a warning
if ($product['current_stock'] == 0 && $display_out_of_stock_warning)