From 87b56d56666a5ae45b103b1bb1eb1341c493c086 Mon Sep 17 00:00:00 2001 From: Karl Cordes Date: Thu, 11 Aug 2011 17:30:03 +1000 Subject: [PATCH] Moved Revision to Document model. Impelemtned document-generic revision system --- controllers/documents_controller.php | 99 ++++++++++++++++++++++- controllers/enquiries_controller.php | 5 +- models/invoice.php | 6 -- vendors/shells/update_quote_revisions.php | 45 +++++++++++ views/documents/view.ctp | 15 ++++ views/elements/document_quote_view.ctp | 9 --- views/elements/quote_table.ctp | 6 +- views/enquiries/view.ctp | 4 +- 8 files changed, 166 insertions(+), 23 deletions(-) create mode 100755 vendors/shells/update_quote_revisions.php diff --git a/controllers/documents_controller.php b/controllers/documents_controller.php index 2ffebcd1..3112e263 100755 --- a/controllers/documents_controller.php +++ b/controllers/documents_controller.php @@ -108,6 +108,102 @@ class DocumentsController extends AppController { } + /** + * Create a New Document + * + * + * @param $type + * @param $id + */ + function newDocument($type = null, $id = null) { + if(!$type|| !$id) { + $this->Session->setFlash('Invalid Doc Type or ID'); + } + + $this->Document->create(); + + switch($type) { + case "quote": + + $enquiryid = $id; + $enquiry = $this->Document->Quote->Enquiry->findById($id); + + if(!$enquiry) { + $this->Session->setFlash('Invalid Enquiry ID'); + $this->redirect(array('action'=>'index')); + return; + } + + $this->data['Document']['enquiry_id'] = $enquiryid; + + $this->data['Quote']['enquiry_id'] = $enquiryid; + $number_of_revisions = $this->Document->Quote->findCount('Quote.enquiry_id ='. $enquiryid); + $this->data['Document']['revision'] = $number_of_revisions; + $this->data['Quote']['date_issued'] = date('Y-m-d'); + $this->data['Quote']['currency_id'] = 2; //All new Quotes default to AUD. + + $this->data['Document']['user_id']= $enquiry['Enquiry']['user_id']; + $this->data['Document']['enquiry_id'] = $enquiryid; + $this->data['Document']['type'] = 'quote'; + break; + case "invoice": + break; + case "purchaseOrder": + break; + case "orderAck": + break; + + } + + if ($this->Document->saveAll($this->data)) { + $newid = $this->Document->id; + + $this->Session->setFlash(__('The Document has been saved', true)); + $this->redirect(array('action'=>'view',$newid)); + } else { + $this->Session->setFlash(__('The Document could not be saved. Please, try again.', true)); + } + + + } + + + /** + * Revise a Document. + * + * @param int $id - the document ID we want to make a new revision of. + * @return + */ + + function revise($id = null) { + if(!$id) { + $this->Session->setFlash('Invalid Document ID'); + return; + } + + $document = $this->Document->find('first', array('conditions' => array('Document.id' => $id))); + + $this->set('document', $document); + + if(!empty($document['Invoice']['id'])) { + echo "WE HAVE AN INVOICE"; + } + else if (!empty($document['Quote']['id'])) { + echo "WE ARE REVISING A QUOTE"; + } + + else if (!empty($document['PurchaseOrder']['id'])) { + echo "WE ARE REVISING A PO"; + } + + + else if (!empty($document['OrderAcknowledgement']['id'])) { + echo "WE ARE REVISING An ORDER ACK"; + } + + } + + /** * Create a new Quote, along with its associated Document and the first two pages. @@ -305,6 +401,8 @@ class DocumentsController extends AppController { $this->set('colWidths',$colWidths); } + + //Called via AJAX to generate Quotation First Pages. function generateFirstPage($id = null) { $this->layout = 'ajax'; @@ -314,7 +412,6 @@ class DocumentsController extends AppController { $document = $this->Document->read(null, $id); $this->set('document',$document); - $enquiry = $this->Document->Quote->Enquiry->read(null, $document['Quote']['enquiry_id']); $this->set('enquiry', $enquiry); } diff --git a/controllers/enquiries_controller.php b/controllers/enquiries_controller.php index 2b157878..d21a61c6 100755 --- a/controllers/enquiries_controller.php +++ b/controllers/enquiries_controller.php @@ -52,10 +52,9 @@ class EnquiriesController extends AppController { $this->set('emails', $emails); //$this->set('quotes', $enquiry['Quote']); - $this->set('quotes', $this->Enquiry->Quote->find('all', array('conditions'=>array('Quote.enquiry_id'=>$id), 'order'=>'Quote.revision DESC'))); - - $this->set('invoices', $this->Enquiry->Invoice->find('all', array('conditions' => array('Invoice.enquiry_id' => $id)))); + $this->set('quotes', $this->Enquiry->Quote->find('all', array('conditions'=>array('Quote.enquiry_id'=>$id), 'order'=>'Document.revision DESC'))); + $this->set('invoices', $this->Enquiry->Invoice->find('all', array('conditions' => array('Invoice.enquiry_id' => $id), 'order'=>'Document.revision DESC'))); $this->pageTitle = "Enquiry: ".$enquiry['Enquiry']['title']; diff --git a/models/invoice.php b/models/invoice.php index 192442e6..6b5fb867 100755 --- a/models/invoice.php +++ b/models/invoice.php @@ -19,17 +19,11 @@ class Invoice extends AppModel { 'Enquiry' => array( 'className' => 'Enquiry', 'foreignKey' => 'enquiry_id', - 'conditions' => '', - 'fields' => '', - 'order' => '', 'counterCache'=>true ), 'User' => array( 'className' => 'User', 'foreignKey' => 'user_id', - 'conditions' => '', - 'fields' => '', - 'order' => '' ), 'Customer' => array( 'className' => 'Customer', diff --git a/vendors/shells/update_quote_revisions.php b/vendors/shells/update_quote_revisions.php new file mode 100755 index 00000000..1f016265 --- /dev/null +++ b/vendors/shells/update_quote_revisions.php @@ -0,0 +1,45 @@ +Enquiry->find('all'); + + // print_r($enquiries); + + $quotes = $this->Quote->find('all'); + + + foreach($quotes as $quote) { + + if($quote['Quote']['revision'] != 0) { + echo 'Quote: '. $quote['Quote']['id'].' Document: '.$quote['Document']['id']; + echo "\tQuote Revision is: {$quote['Quote']['revision']} Doc Revision is: {$quote['Document']['revision']} \n"; + + $this->Document->read(null, $quote['Document']['id']); + $this->Document->set('revision', $quote['Quote']['revision']); + + if($this->Document->save()) { + echo "Updated Document ID\n"; + } + } + + + + } + + } +} + + +?> diff --git a/views/documents/view.ctp b/views/documents/view.ctp index 1b7cdbce..e135d5d9 100755 --- a/views/documents/view.ctp +++ b/views/documents/view.ctp @@ -4,6 +4,21 @@ echo $javascript->link('ckeditor/adapters/jquery'); echo $javascript->link('document_add_edit'); +?> + +

: link($enquiry['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view',$enquiry['Enquiry']['id']));?> 0) { + echo "Revision {$document['Document']['revision']} "; + } + ?> + for + link($enquiry['Customer']['name'], array('controller'=>'customers','action'=>'view',$enquiry['Customer']['id']));?> +

+ +element('pdf_created_message'); ?> + +element('document_quote_view'); diff --git a/views/elements/document_quote_view.ctp b/views/elements/document_quote_view.ctp index ad8a82ba..3b553938 100644 --- a/views/elements/document_quote_view.ctp +++ b/views/elements/document_quote_view.ctp @@ -1,13 +1,4 @@ -

Quote: link($enquiry['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view',$enquiry['Enquiry']['id']));?> 0) { - echo "Revision {$document['Quote']['revision']} "; - } - ?> - for - link($enquiry['Customer']['name'], array('controller'=>'customers','action'=>'view',$enquiry['Customer']['id']));?> -

-element('pdf_created_message'); ?> create('Document',array('type'=>'post','action'=>'edit', 'default'=>false)); diff --git a/views/elements/quote_table.ctp b/views/elements/quote_table.ctp index fe2aa53e..29c88224 100755 --- a/views/elements/quote_table.ctp +++ b/views/elements/quote_table.ctp @@ -21,13 +21,13 @@ $i++; ?> > - + nice($quote['Quote']['created']);?> link(__('View', true), array('controller'=> 'documents', 'action'=>'view', $quote['Quote']['document_id'])); ?> - link(__('Revise', true), array('controller'=>'quotes', 'action'=>'revise', $quote['Quote']['id'])); + link(__('Revise', true), array('controller'=>'documents', 'action'=>'revise', $quote['Quote']['document_id'])); ?> @@ -39,7 +39,7 @@
    -
  • link(__('New Quote', true), array('controller'=> 'documents', 'action'=>'newQuote',$enquiry['Enquiry']['id']));?>
  • +
  • link(__('New Quote', true), array('controller'=> 'documents', 'action'=>'newDocument/quote/'.$enquiry['Enquiry']['id']));?>
diff --git a/views/enquiries/view.ctp b/views/enquiries/view.ctp index 739f85d5..a748eb50 100755 --- a/views/enquiries/view.ctp +++ b/views/enquiries/view.ctp @@ -323,7 +323,9 @@
    -
  • link(__('New Invoice', true), array('controller'=>'invoices', 'action' => 'add/enquiryid:'.$enquiry['Enquiry']['id'])); ?>
  • +
  • link(__('New Invoice', true), array('controller'=>'invoices', 'action' => 'add/enquiryid:'.$enquiry['Enquiry']['id'])); ?> +
  • +
  • link(__('New Invoice', true), array('controller'=>'documents', 'action' => 'newDocument/invoice/'.$enquiry['Enquiry']['id'])); ?>