diff --git a/application/config/routes.php b/application/config/routes.php index 891f9de81..b228569bc 100644 --- a/application/config/routes.php +++ b/application/config/routes.php @@ -50,6 +50,8 @@ $route['reports/(graphical_:any)/(:any)/(:any)'] = "reports/$1/$2/$3"; $route['reports/graphical_:any'] = "reports/date_input"; $route['reports/(inventory_:any)/(:any)'] = "reports/$1/$2"; $route['reports/inventory_:any'] = "reports/excel_export"; +$route['reports/inventory_summary'] = "reports/inventory_summary_input"; +$route['reports/(inventory_summary)/(:any)/(:any)/(:any)'] = "reports/$1/$2/$3/$4"; $route['reports/(detailed_sales)/(:any)/(:any)/(:any)'] = "reports/$1/$2/$3$/$4"; $route['reports/detailed_sales'] = "reports/date_input_sales"; diff --git a/application/controllers/reports.php b/application/controllers/reports.php index 6f029808d..3c7455ccb 100644 --- a/application/controllers/reports.php +++ b/application/controllers/reports.php @@ -972,15 +972,38 @@ class Reports extends Secure_area $this->load->view("reports/tabular",$data); } - function inventory_summary($export_excel=0) + function inventory_summary_input() + { + $data = array(); + + $this->load->model('reports/Inventory_Summary'); + $model = $this->Inventory_Summary; + $data['item_count'] = $model->getItemCountDropdownArray(); + + $stock_locations = $this->Stock_locations->get_allowed_locations(); + $stock_locations['all'] = $this->lang->line('reports_all'); + $data['stock_locations'] = array_reverse($stock_locations, TRUE); + + $this->load->view("reports/inventory_summary_input", $data); + } + + function inventory_summary($export_excel=0, $location_id = 'all', $item_count = 'all') { $this->load->model('reports/Inventory_summary'); $model = $this->Inventory_summary; $tabular_data = array(); - $report_data = $model->getData(array()); + $report_data = $model->getData(array('location_id'=>$location_id,'item_count'=>$item_count)); foreach($report_data as $row) { - $tabular_data[] = array($row['name'], $row['item_number'], $row['description'], $row['quantity'], $row['reorder_level'],$row['location_name']); + $tabular_data[] = array($row['name'], + $row['item_number'], + $row['description'], + $row['quantity'], + $row['reorder_level'], + $row['location_name'], + to_currency($row['cost_price']), + to_currency($row['unit_price']), + to_currency($row['sub_total_value'])); } $data = array( @@ -988,7 +1011,7 @@ class Reports extends Secure_area "subtitle" => '', "headers" => $model->getDataColumns(), "data" => $tabular_data, - "summary_data" => $model->getSummaryData(array()), + "summary_data" => $model->getSummaryData($report_data), "export_excel" => $export_excel ); diff --git a/application/language/en/reports_lang.php b/application/language/en/reports_lang.php index 4886f1ff9..64771c384 100644 --- a/application/language/en/reports_lang.php +++ b/application/language/en/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "Total"; $lang["reports_type"] = "Type"; $lang["reports_welcome_message"] = "Welcome to the reports panel. Please select a report to view."; $lang["reports_yesterday"] = "Yesterday"; +$lang["reports_item_count"] = "Filter Item Count"; +$lang["reports_cost_price"] = "Cost Price"; +$lang["reports_unit_price"] = "Retail Price"; +$lang["reports_sub_total_value"] = "Sub Total"; +$lang["reports_total_inventory_value"] = "Total Inventory Value"; +$lang["reports_zero_and_less"] = "Zero and less"; +$lang["reports_more_than_zero"] = "More than zero"; diff --git a/application/language/es/reports_lang.php b/application/language/es/reports_lang.php index f80c834ed..fd1d08ae9 100644 --- a/application/language/es/reports_lang.php +++ b/application/language/es/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "Total"; $lang["reports_type"] = "Tipo"; $lang["reports_welcome_message"] = "Bienvenido(a) al panel de reportes. Selecciona un reporte para verlo."; $lang["reports_yesterday"] = "Ayer"; +$lang["reports_item_count"] = ""; +$lang["reports_cost_price"] = "Precio de Compra"; +$lang["reports_unit_price"] = "Precio de Venta"; +$lang["reports_sub_total_value"] = "Subtotal"; +$lang["reports_total_inventory_value"] = ""; +$lang["reports_zero_and_less"] = ""; +$lang["reports_more_than_zero"] = ""; diff --git a/application/language/fr/reports_lang.php b/application/language/fr/reports_lang.php index 6c35f4dda..e03493b23 100644 --- a/application/language/fr/reports_lang.php +++ b/application/language/fr/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "Total"; $lang["reports_type"] = "Type"; $lang["reports_welcome_message"] = "Bienvenue à la page des rapports. Veuillez sélectionner un rapport à visualiser."; $lang["reports_yesterday"] = "Hier"; +$lang["reports_item_count"] = ""; +$lang["reports_cost_price"] = "Prix de Gros"; +$lang["reports_unit_price"] = "Prix au Détail"; +$lang["reports_sub_total_value"] = "Sous-Total"; +$lang["reports_total_inventory_value"] = ""; +$lang["reports_zero_and_less"] = ""; +$lang["reports_more_than_zero"] = ""; diff --git a/application/language/id/reports_lang.php b/application/language/id/reports_lang.php index d3b6f4f33..da9d23ac7 100644 --- a/application/language/id/reports_lang.php +++ b/application/language/id/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "Total"; $lang["reports_type"] = "Tipe"; $lang["reports_welcome_message"] = "Selamat Datang ke panel laporan. Silakan pilih laporan untuk melihat/cetak."; $lang["reports_yesterday"] = "Kemarin"; +$lang["reports_item_count"] = ""; +$lang["reports_cost_price"] = "Harga Pokok"; +$lang["reports_unit_price"] = "Harga Jual"; +$lang["reports_sub_total_value"] = "Sub Total"; +$lang["reports_total_inventory_value"] = "Total Nilai Persediaan"; +$lang["reports_zero_and_less"] = "Stok habis dan minus"; +$lang["reports_more_than_zero"] = "Stok belum habis"; diff --git a/application/language/nl-BE/reports_lang.php b/application/language/nl-BE/reports_lang.php index 29ac3dd48..f7a771c37 100755 --- a/application/language/nl-BE/reports_lang.php +++ b/application/language/nl-BE/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "Totaal"; $lang["reports_type"] = "Type"; $lang["reports_welcome_message"] = "Welkom bij de rapporten. Selecteer hier een rapport."; $lang["reports_yesterday"] = "Gisteren"; +$lang["reports_item_count"] = ""; +$lang["reports_cost_price"] = "Aankoopprijs"; +$lang["reports_unit_price"] = "Verkoopprijs"; +$lang["reports_sub_total_value"] = "Subtotaal"; +$lang["reports_total_inventory_value"] = ""; +$lang["reports_zero_and_less"] = ""; +$lang["reports_more_than_zero"] = ""; diff --git a/application/language/ru/reports_lang.php b/application/language/ru/reports_lang.php index 85816ff57..df2637579 100644 --- a/application/language/ru/reports_lang.php +++ b/application/language/ru/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "сумма"; $lang["reports_type"] = "тип"; $lang["reports_welcome_message"] = "Добро пожаловать в панель отчетов. Пожалуйста, выберите отчет для просмотра."; $lang["reports_yesterday"] = "вчера"; +$lang["reports_item_count"] = ""; +$lang["reports_cost_price"] = "Оптовая Цена"; +$lang["reports_unit_price"] = "Розничная Цена"; +$lang["reports_sub_total_value"] = "промежуточный итог"; +$lang["reports_total_inventory_value"] = ""; +$lang["reports_zero_and_less"] = ""; +$lang["reports_more_than_zero"] = ""; diff --git a/application/language/th/reports_lang.php b/application/language/th/reports_lang.php index 8ff3a0186..a42d0cb02 100644 --- a/application/language/th/reports_lang.php +++ b/application/language/th/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "ยอดรวม"; $lang["reports_type"] = "ชนิด"; $lang["reports_welcome_message"] = "ยินดีต้อนรับเข้าสู่รายงาน. โปรดเลือกชนิดของรายงาน."; $lang["reports_yesterday"] = "เมื่อวานนี้"; +$lang["reports_item_count"] = ""; +$lang["reports_cost_price"] = "ราคาทุน"; +$lang["reports_unit_price"] = "ราคาขาย"; +$lang["reports_sub_total_value"] = "ยอดรวมหักภาษี "; +$lang["reports_total_inventory_value"] = ""; +$lang["reports_zero_and_less"] = ""; +$lang["reports_more_than_zero"] = ""; diff --git a/application/language/tr/reports_lang.php b/application/language/tr/reports_lang.php index 302cfbf6b..ab4d7e7b8 100644 --- a/application/language/tr/reports_lang.php +++ b/application/language/tr/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "Toplam"; $lang["reports_type"] = "Tür"; $lang["reports_welcome_message"] = "Rapor paneline hoş geldiniz. Görmek istediğiniz raporu seçiniz."; $lang["reports_yesterday"] = "Dün"; +$lang["reports_item_count"] = "Filter Stok Habis/Belum Habis/Minus"; +$lang["reports_cost_price"] = "Maliyet Fiyatı"; +$lang["reports_unit_price"] = "Satış Fiyatı"; +$lang["reports_sub_total_value"] = "Ara Toplam"; +$lang["reports_total_inventory_value"] = ""; +$lang["reports_zero_and_less"] = ""; +$lang["reports_more_than_zero"] = ""; diff --git a/application/language/zh/reports_lang.php b/application/language/zh/reports_lang.php index 5be9049c0..37164c476 100755 --- a/application/language/zh/reports_lang.php +++ b/application/language/zh/reports_lang.php @@ -95,3 +95,10 @@ $lang["reports_total"] = "總計"; $lang["reports_type"] = "類型"; $lang["reports_welcome_message"] = "歡迎使用報表系統。請選擇要查看的報表。"; $lang["reports_yesterday"] = "昨天"; +$lang["reports_item_count"] = ""; +$lang["reports_cost_price"] = "成本價"; +$lang["reports_unit_price"] = "單價"; +$lang["reports_sub_total_value"] = "小計"; +$lang["reports_total_inventory_value"] = ""; +$lang["reports_zero_and_less"] = ""; +$lang["reports_more_than_zero"] = ""; diff --git a/application/models/reports/inventory_summary.php b/application/models/reports/inventory_summary.php index e0591f6a3..4043b5e0a 100644 --- a/application/models/reports/inventory_summary.php +++ b/application/models/reports/inventory_summary.php @@ -9,7 +9,15 @@ class Inventory_summary extends Report public function getDataColumns() { - return array($this->lang->line('reports_item_name'), $this->lang->line('reports_item_number'), $this->lang->line('reports_description'), $this->lang->line('reports_count'), $this->lang->line('reports_reorder_level'), $this->lang->line('reports_stock_location')); + return array($this->lang->line('reports_item_name'), + $this->lang->line('reports_item_number'), + $this->lang->line('reports_description'), + $this->lang->line('reports_count'), + $this->lang->line('reports_reorder_level'), + $this->lang->line('reports_stock_location'), + $this->lang->line('reports_cost_price'), + $this->lang->line('reports_unit_price'), + $this->lang->line('reports_sub_total_value')); } public function getData(array $inputs) @@ -17,16 +25,55 @@ class Inventory_summary extends Report $this->db->from('items'); $this->db->join('item_quantities','items.item_id=item_quantities.item_id'); $this->db->join('stock_locations','item_quantities.location_id=stock_locations.location_id'); - $this->db->select('name, item_number, reorder_level, item_quantities.quantity, description, location_name'); + $this->db->select('name, item_number, reorder_level, item_quantities.quantity, description, location_name, cost_price, unit_price, (cost_price*quantity) as sub_total_value'); $this->db->where('items.deleted', 0); + // should be corresponding to values Inventory_summary::getItemCountDropdownArray() returns... + if($inputs['item_count'] == 'zero_and_less') + { + $this->db->where('quantity <=', 0); + } + elseif($inputs['item_count'] == 'more_than_zero') + { + $this->db->where('quantity >', 0); + } + + if($inputs['location_id'] != 'all') + { + $this->db->where('item_quantities.location_id',$inputs['location_id']); + } + $this->db->order_by('name'); return $this->db->get()->result_array(); } + /** + * calulcates the total value of the given inventory summary by summing all sub_total_values (see Inventory_summary::getData()) + * + * @param array $inputs expects the reports-data-array which Inventory_summary::getData() returns + * @return array + */ public function getSummaryData(array $inputs) { - return array(); + $return = array('total_inventory_value' => 0); + foreach($inputs as $input) + { + $return['total_inventory_value'] += $input['sub_total_value']; + } + return $return; + } + + /** + * returns the array for the dropdown-element item-count in the form for the inventory summary-report + * + * @return array + */ + public function getItemCountDropdownArray() + { + return array( + 'all' => $this->lang->line('reports_all'), + 'zero_and_less' => $this->lang->line('reports_zero_and_less'), + 'more_than_zero' => $this->lang->line('reports_more_than_zero')); } } ?> \ No newline at end of file diff --git a/application/views/reports/inventory_summary_input.php b/application/views/reports/inventory_summary_input.php new file mode 100644 index 000000000..7fc1db563 --- /dev/null +++ b/application/views/reports/inventory_summary_input.php @@ -0,0 +1,49 @@ +load->view("partial/header"); ?> +