diff --git a/app/controllers/documents_controller.php b/app/controllers/documents_controller.php index b5ee65a2..5a7c288b 100755 --- a/app/controllers/documents_controller.php +++ b/app/controllers/documents_controller.php @@ -531,8 +531,11 @@ ENDINSTRUCTIONS; //die(print_r($this->data)); } - if ($this->Document->saveAll($this->data)) { + if ($this->Document->saveAll($this->data)) { echo 'SUCCESS'; //this is so stupid + + + } else { echo 'FAILURE'; } @@ -541,8 +544,7 @@ ENDINSTRUCTIONS; echo 'FAILURE'; } } - - + /** * * Convert a Quote to an OrderAcknowledgement. diff --git a/app/controllers/invoices_controller.php b/app/controllers/invoices_controller.php index 1f3e15bf..0468a23c 100755 --- a/app/controllers/invoices_controller.php +++ b/app/controllers/invoices_controller.php @@ -12,8 +12,16 @@ class InvoicesController extends AppController { ); function index() { - $this->Invoice->recursive = 0; + $this->Invoice->recursive = 0; $this->set('invoices', $this->paginate()); + + /*$q = <<Invoice->query($q); + + $this->set('invoices', $results);*/ } @@ -91,4 +99,4 @@ class InvoicesController extends AppController { } -?> \ No newline at end of file +?> diff --git a/app/controllers/line_items_controller.php b/app/controllers/line_items_controller.php index ad8fc147..124a5758 100755 --- a/app/controllers/line_items_controller.php +++ b/app/controllers/line_items_controller.php @@ -14,11 +14,11 @@ class LineItemsController extends AppController { $this->LineItem->create($this->data); if ($this->LineItem->save($this->data)) { - echo "SUCCESS"; + echo "SUCCESS"; // matching on strings rather than HTTP status codes :( + $this->updateInvoice($this->data['LineItem']['document_id']); } else { echo "FAILURE"; - //print_r($this->data); } } @@ -35,6 +35,7 @@ class LineItemsController extends AppController { if ($this->LineItem->save($this->data)) { echo "SUCCESS"; + $this->updateInvoice($this->data['LineItem']['document_id']); } else { echo "FAILURE"; @@ -55,6 +56,7 @@ class LineItemsController extends AppController { else { if ($this->LineItem->del($id)) { echo "SUCCESS"; + $this->updateInvoice($this->data['LineItem']['document_id']); } else { echo "FAILURE"; @@ -107,5 +109,21 @@ class LineItemsController extends AppController { $this->set('principles', $this->LineItem->Product->Principle->find('list')); } + // Adding or editing an Invoice means we need to update the invoiced_amount column + // issue #54 + function updateInvoice($documentID) { + // If we've changed a line_item for an invoice, update the invoiced amount + // on the invoices table. + $document = $this->LineItem->Document->find('first', array('conditions' => array('Document.id' => $documentID), 'recursive'=>1)); + // For invoices, we need to save the calculated invoice total to implement issue #54. + if($document['Document']['type'] == 'invoice') { + $enquiry = $this->LineItem->Document->getEnquiry($document); + $invoice = $this->LineItem->Document->Invoice->find('first', array('conditions'=>array('Invoice.id'=>$document['Invoice']['id']))); + $totals = $this->calculateTotals($document, $enquiry['Enquiry']['gst']); + $invoice['Invoice']['amount_invoiced'] = $totals['total']; + $this->LineItem->Document->Invoice->save($invoice); + } + } + } ?> diff --git a/app/views/invoices/edit.ctp b/app/views/invoices/edit.ctp index a1cd37c7..5fee6d8f 100755 --- a/app/views/invoices/edit.ctp +++ b/app/views/invoices/edit.ctp @@ -6,7 +6,7 @@ echo $form->input('id'); echo $form->input('issue_date'); echo $form->input('due_date'); - echo $form->input('title'); + echo $form->input('title', array('class'=>'disabled', 'readonly'=>'readonly')); echo $form->input('paid'); echo $form->input('payment_received_date'); echo $form->input('enquiry_id', array('type'=>'hidden')); diff --git a/app/views/invoices/index.ctp b/app/views/invoices/index.ctp index ac457e7b..7bc98313 100755 --- a/app/views/invoices/index.ctp +++ b/app/views/invoices/index.ctp @@ -10,13 +10,15 @@ sort('issue_date');?> - sort('due_date');?> + Date Due + sort('paid');?> + Date Received sort('Invoice Number');?> sort('Job Number');?> sort('enquiry_id');?> sort('Customer'); ?> - sort('paid');?> - sort('payment_received_date');?> + + @@ -35,22 +37,12 @@ toUnix($invoice['Invoice']['issue_date'])); ?> + toUnix($invoice['Invoice']['due_date'])); ?> - - - - - link($invoice['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $invoice['Invoice']['job_id'])); ?> - - - link($invoice['Enquiry']['title'], array('controller' => 'enquiries', 'action' => 'view', $invoice['Enquiry']['id'])); ?> - - - link($invoice['Customer']['name'], array('controller'=>'customers', 'action'=>'view', $invoice['Customer']['id'])); ?> - - + + - + TODO + + + + + link($invoice['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $invoice['Invoice']['job_id'])); ?> + + + link($invoice['Enquiry']['title'], array('controller' => 'enquiries', 'action' => 'view', $invoice['Enquiry']['id'])); ?> + + + link($invoice['Customer']['name'], array('controller'=>'customers', 'action'=>'view', $invoice['Customer']['id'])); ?> + + link('View', '/documents/view/'.$invoice['Invoice']['document_id']);?>