From 170d0390d753d3f2a7f30c4ed59488d7992426d8 Mon Sep 17 00:00:00 2001 From: Janusz Dobrowolski Date: Wed, 8 May 2013 12:51:54 +0200 Subject: [PATCH] Fixed optional sorting lines during sales document ediiton (sort made in display layer, active also for old transactions). --- config.default.php | 2 +- sales/includes/cart_class.inc | 14 +++++++++----- sales/includes/ui/sales_credit_ui.inc | 2 +- sales/includes/ui/sales_order_ui.inc | 3 ++- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/config.default.php b/config.default.php index 5dfa4fee..b0e8cc55 100644 --- a/config.default.php +++ b/config.default.php @@ -282,7 +282,7 @@ $xr_providers = array("ECB", "YAHOO", "GOOGLE", "BLOOMBERG"); $dflt_xr_provider = 0; /* - Optional sorting new sales documents lines according to item code + Optional sorting sales documents lines during edition according to item code */ $sort_sales_items = false; diff --git a/sales/includes/cart_class.inc b/sales/includes/cart_class.inc index 9b8c27ed..5a3d561d 100644 --- a/sales/includes/cart_class.inc +++ b/sales/includes/cart_class.inc @@ -101,12 +101,18 @@ class cart return strcmp($a->stock_id, $b->stock_id); } - function sort_items() + /* + Returns items array optionally sorted by item code. + */ + function get_items() { global $sort_sales_items; - if (@$sort_sales_items && !$this->trans_no) // sort items optionally for new transaction - usort($this->line_items, array($this, '_cmp_lines')); + $items = $this->line_items; + if (@$sort_sales_items) + uasort($items, array($this, '_cmp_lines')); + + return $items; } // // Prepare cart to new child document entry, just after initial parent doc read. @@ -366,7 +372,6 @@ class cart if ($line->valid) { $this->line_items[$line_no] = $line; - $this->sort_items(); return 1; } else display_error(_("You have to enter valid stock code or nonempty description")); @@ -381,7 +386,6 @@ class cart $this->line_items[$line_no]->qty_dispatched = $qty; $this->line_items[$line_no]->price = $price; $this->line_items[$line_no]->discount_percent = $disc; - $this->sort_items(); } function update_add_cart_item_qty($line_no, $qty) diff --git a/sales/includes/ui/sales_credit_ui.inc b/sales/includes/ui/sales_credit_ui.inc index ac9c932f..b75aac1e 100644 --- a/sales/includes/ui/sales_credit_ui.inc +++ b/sales/includes/ui/sales_credit_ui.inc @@ -176,7 +176,7 @@ function display_credit_items($title, &$order) $id = find_submit('Edit'); - foreach ($order->line_items as $line_no=>$line) + foreach ($order->get_items() as $line_no=>$line) { $line_total = round($line->qty_dispatched * $line->price * (1 - $line->discount_percent), user_price_dec()); diff --git a/sales/includes/ui/sales_order_ui.inc b/sales/includes/ui/sales_order_ui.inc index 0ace8627..0d2b3d33 100644 --- a/sales/includes/ui/sales_order_ui.inc +++ b/sales/includes/ui/sales_order_ui.inc @@ -159,7 +159,8 @@ function display_order_summary($title, &$order, $editable_items=false) $id = find_submit('Edit'); $has_marked = false; - foreach ($order->line_items as $line_no=>$stock_item) + + foreach ($order->get_items() as $line_no=>$stock_item) { $line_total = round($stock_item->qty_dispatched * $stock_item->price * (1 - $stock_item->discount_percent), -- 2.30.2