From 20318e5d6aa87acb502cc08575276e47a2bacf5a Mon Sep 17 00:00:00 2001 From: Karl Cordes Date: Thu, 7 Apr 2011 12:26:26 +1000 Subject: [PATCH] Added print view to invoices --- controllers/invoices_controller.php | 8 +++ controllers/jobs_controller.php | 68 ++++++++++++++++++++------ views/jobs/get_editable_row.ctp | 2 +- views/jobs/get_viewable_row.ctp | 4 +- views/jobs/index.ctp | 8 +-- views/jobs/reports.ctp | 76 ++++++++--------------------- views/layouts/default.ctp | 1 + webroot/css/quotenik.css | 45 +++++++++++++++++ 8 files changed, 134 insertions(+), 78 deletions(-) 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 { 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'));?> input('date_order_received', array('type'=>'hidden', 'id'=>$job['Job']['id'].'_date_order_received', 'value'=>$job['Job']['date_order_received']));?> -input('job_status', array('type'=>'select', 'options'=>$job_status_options, 'value'=>$job['Job']['job_status'], 'label'=>false));?> +input('job_status', array('type'=>'select', 'options'=>$job_status_options, 'value'=>$job['Job']['job_status'], 'label'=>false, 'class'=>'job_status'));?> 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 @@ - link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?> - link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?> + link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?> + link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?> counter(array( element('isEmptyDate', array('date'=>$job['Job']['date_order_received']));?> - - + + link($job['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $job['Job']['id']));?> - link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?> + link($job['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view', $job['Enquiry']['id']));?> counter(array( element('isEmptyDate', array('date'=>$job['Job']['date_order_placed_on_principle']));?> link($job['Customer']['name'], array('controller'=>'customers','action'=>'view', $job['Customer']['id']));?> - + 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 @@ +link('job_reports');?> +

Book 1 - Reports

+
+ $monthArr): + ?> + - + - -$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): -?> -

- - - - $jobArr): ?> - - - - - - - - $jobArr): ?> - - - - -
Week
- -
- - +
\ 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