diff --git a/controllers/invoices_controller.php b/controllers/invoices_controller.php
index f8ade88c..fd9ba402 100755
--- a/controllers/invoices_controller.php
+++ b/controllers/invoices_controller.php
@@ -16,6 +16,14 @@ class InvoicesController extends AppController {
$this->set('invoices', $this->paginate());
}
+
+
+ function printView() {
+ $this->layout = 'minimal';
+ $this->Invoice->recursive = 0;
+ $this->set('invoices', $this->Invoice->find('all'));
+ }
+
function view($id = null) {
if (!$id) {
$this->Session->setFlash(__('Invalid Invoice.', true));
diff --git a/controllers/jobs_controller.php b/controllers/jobs_controller.php
index 7b5e8d47..5a5ccaca 100755
--- a/controllers/jobs_controller.php
+++ b/controllers/jobs_controller.php
@@ -57,32 +57,70 @@ class JobsController extends AppController {
$this->set('shipment_options', $this->shipment_options());
$this->set('freight_paid_by_options',$this->freight_paid_options());
$this->set('gst_options', $this->gst_options());
-
+
}
function reports() {
- $this->Job->recursive = 1;
- $this->set('jobs', $this->Job->find('all', array('order'=>array('Job.date_order_received'=>'asc'))));
- $this->set('customers', $this->Job->Enquiry->Customer->find('list'));
- $this->set('currencies', $this->Job->Currency->find('list'));
+ $this->Job->recursive = 0;
+ $jobs = $this->Job->find('all', array('fields'=>array('Job.date_order_received'), 'order'=>array('Job.date_order_received'=>'asc')));
+
+ $monthList = $this->getYearMonths($jobs);
+
+ $this->set('monthList', $monthList);
+ /* $this->set('jobs', $jobs);
+ $this->set('customers', $this->Job->Enquiry->Customer->find('list'));
+ $this->set('currencies', $this->Job->Currency->find('list'));*/
+
+ }
+
+
+
+ function viewReport($year, $month) {
+ $this->layout = 'ajax';
+
+ $this->set('year', $year);
+ $this->set('month', $month);
+
+ }
+
+
+ /**
+ * Build an array of Years/Months with Jobs.
+ *
+ * Currently used in reports.ctp to build the Navigation list.
+ *
+ * @param Array $jobs
+ * @return Array
+ */
+ function getYearMonths($jobs) {
+ $weekList = array();
+ foreach($jobs as $job) {
+ $time = strtotime($job['Job']['date_order_received']);
+ $year = date('Y', $time); //ISO-8601 year number
+ $month = date('F', $time);
+ $monthList[$year][$month][] = $job;
+ }
+ krsort($monthList);
+
+ return $monthList;
}
function job_status_options() {
$options = array('ORDER RECEIVED FROM CUSTOMER',
- 'ORDER PLACED ON PRINCIPLE - WAITING ON DELIVERY',
- 'GOODS SHIPPED TO CUSTOMER - CMC WAITING ON PAYMENT',
- 'WAITING ON PAYMENT AND ANOTHER DELIVERY',
- 'GOODS DELIVERED TO CUSTOMER - CMC PAID IN FULL',
- 'PAID IN FULL WAITING ON DELIVERY',
- 'JOB CANCELLED',
- 'JOB ON HOLD',
- 'CUSTOMER TO PAY 100% WITH ORDER');
- $options = $this->buildEnumOpts($options);
- return $options;
+ 'ORDER PLACED ON PRINCIPLE - WAITING ON DELIVERY',
+ 'GOODS SHIPPED TO CUSTOMER - CMC WAITING ON PAYMENT',
+ 'WAITING ON PAYMENT AND ANOTHER DELIVERY',
+ 'GOODS DELIVERED TO CUSTOMER - CMC PAID IN FULL',
+ 'PAID IN FULL WAITING ON DELIVERY',
+ 'JOB CANCELLED',
+ 'JOB ON HOLD',
+ 'CUSTOMER TO PAY 100% WITH ORDER');
+ $options = $this->buildEnumOpts($options);
+ return $options;
}
diff --git a/views/jobs/get_editable_row.ctp b/views/jobs/get_editable_row.ctp
index fe6b2270..4ab0a933 100644
--- a/views/jobs/get_editable_row.ctp
+++ b/views/jobs/get_editable_row.ctp
@@ -72,7 +72,7 @@ else {
=$form->input('date_order_received_display', array('value'=>$this->element('isEmptyDate', array('date'=>$job['Job']['date_order_received'])), 'label'=>false, 'id'=>$job['Job']['id'].'_date_order_received_display'));?>
=$form->input('date_order_received', array('type'=>'hidden', 'id'=>$job['Job']['id'].'_date_order_received', 'value'=>$job['Job']['date_order_received']));?>
-=$form->input('job_status', array('type'=>'select', 'options'=>$job_status_options, 'value'=>$job['Job']['job_status'], 'label'=>false));?>
+=$form->input('job_status', array('type'=>'select', 'options'=>$job_status_options, 'value'=>$job['Job']['job_status'], 'label'=>false, 'class'=>'job_status'));?>
=$form->input('sale_category', array('options'=>$sale_category_options, 'type'=>'select', 'label'=>false, 'value'=>$job['Job']['sale_category'], 'class'=>'sale_category'));?>
diff --git a/views/jobs/get_viewable_row.ctp b/views/jobs/get_viewable_row.ctp
index b68c14de..c2ef5a69 100644
--- a/views/jobs/get_viewable_row.ctp
+++ b/views/jobs/get_viewable_row.ctp
@@ -8,8 +8,8 @@
=$job['Job']['job_type'];?>
=$job['Job']['shipment_category'];?>
- =$html->link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?>
- =$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?>
+ =$html->link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?>
+ =$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?>
$poString = '';
foreach($job['PurchaseOrder'] as $po) {
diff --git a/views/jobs/index.ctp b/views/jobs/index.ctp
index a79812c1..7c5853ac 100644
--- a/views/jobs/index.ctp
+++ b/views/jobs/index.ctp
@@ -79,15 +79,15 @@ echo $paginator->counter(array(
Edit
=$this->element('isEmptyDate', array('date'=>$job['Job']['date_order_received']));?>
- =$job['Job']['job_status'];?>
-
+ =$job['Job']['job_status'];?>
+
=$sale_category_array[$job['Job']['sale_category']];?>
=$job['Job']['job_type'];?>
=$job['Job']['shipment_category'];?>
=$html->link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?>
- =$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?>
+ =$html->link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?>
$poString = '';
foreach($job['PurchaseOrder'] as $po) {
@@ -98,7 +98,7 @@ echo $paginator->counter(array(
=$this->element('isEmptyDate', array('date'=>$job['Job']['date_order_placed_on_principle']));?>
=$html->link($job['Customer']['name'], array('controller'=>'customers','action'=>'view', $job['Customer']['id']));?>
-
+
=$job['Job']['customer_order_number'];?>
diff --git a/views/jobs/reports.ctp b/views/jobs/reports.ctp
index fc97f8c6..d03562ae 100644
--- a/views/jobs/reports.ctp
+++ b/views/jobs/reports.ctp
@@ -1,65 +1,29 @@
+=$javascript->link('job_reports');?>
+
Book 1 - Reports
+
+
+ foreach($monthList as $year => $monthArr):
+ ?>
+
+ =$year?>
+
+ $job):?>
+ =$month;?>
+
+
+
+
+
-//debug($jobs); ?>
+
-
+
-$weekList = array();
+
-foreach($jobs as $job) {
-
- $time = strtotime($job['Job']['date_order_received']);
-
-
-
- $year = date('Y', $time); //ISO-8601 year number
- $weekNo = date('W', $time);
-
- $weekList[$year][$weekNo][] = $job;
- /*if(isset($weekList[$year][$weekNo])) {
- $weekList[$year][$weekNo]++;
- }
- else {
- $weekList[$year][$weekNo] = 0;
- }*/
-
-
-}
-
-
-
-
-//echo debug($weekList);
-foreach($weekList as $year => $weekNos):
-?>
-
=$year?>
-
-
-
- foreach ($weekNos as $week => $jobArr): ?>
- Week =$week?>
-
-
-
-
-
-
- foreach ($weekNos as $week => $jobArr): ?>
-
- $totalSales = 0;
- foreach($jobArr as $job) {
- $totalSales += $job['Job']['company_gross_sales_aud'];
- }
- echo $totalSales;
- ?>
-
-
-
-
-
-
-
+
\ No newline at end of file
diff --git a/views/layouts/default.ctp b/views/layouts/default.ctp
index 5296dd96..ea2c9ea7 100755
--- a/views/layouts/default.ctp
+++ b/views/layouts/default.ctp
@@ -85,6 +85,7 @@
link('Invoices', '/invoices/index'); ?>
link('Invoices Index', '/invoices/index'); ?>
+ link('Print View', '/invoices/printView'); ?>
diff --git a/webroot/css/quotenik.css b/webroot/css/quotenik.css
index 59d5a95f..ea31011c 100755
--- a/webroot/css/quotenik.css
+++ b/webroot/css/quotenik.css
@@ -1329,8 +1329,53 @@ select.sale_category {
width: 300px;
}
+select.job_status {
+ width: 300px;
+}
+
.outer {
height: 650px;
+}
+
+.nowrap {
+ margin: 0;
+ padding: 0;
+ white-space: nowrap;
+}
+
+
+/* CSS for the Job Reporting */
+
+#yearMonths {
+ width: 10em;
+}
+
+ul.yearList {
+ list-style: none;
+ padding-bottom: 1em;
+}
+
+ul.monthList {
+ list-style: none;
+ padding-left: 0.5em;
+}
+ul.yearList li.year {
+ margin: 1em;
+ font-size: 200%;
+ cursor: pointer;
+}
+
+ul.monthList li {
+ margin-left:1em;
+ margin-top:0.5em;
+}
+
+span.month {
+ cursor: pointer;
+}
+
+span.year {
+ cursor: pointer;
}
\ No newline at end of file