Moved Revision to Document model. Impelemtned document-generic revision system

This commit is contained in:
Karl Cordes 2011-08-11 17:30:03 +10:00
parent 69f2e7b633
commit 87b56d5666
8 changed files with 166 additions and 23 deletions

View file

@ -108,6 +108,102 @@ class DocumentsController extends AppController {
}
/**
* Create a New Document
*
*
* @param <type> $type
* @param <type> $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 <type>
*/
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);
}

View file

@ -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'];

View file

@ -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',

45
vendors/shells/update_quote_revisions.php vendored Executable file
View file

@ -0,0 +1,45 @@
<?php
/**
i* file: Fix Quote revisions now that revision attribute is going to Documents
*
*/
class UpdateQuoteRevisionsShell extends Shell {
var $uses = array('Enquiry', 'Quote', 'Document');
function main() {
// $enquiries = $this->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";
}
}
}
}
}
?>

View file

@ -4,6 +4,21 @@ echo $javascript->link('ckeditor/adapters/jquery');
echo $javascript->link('document_add_edit');
?>
<h2><?=$docTypeFullName?>: <?=$html->link($enquiry['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view',$enquiry['Enquiry']['id']));?> <?
if($document['Document']['revision'] > 0) {
echo "Revision {$document['Document']['revision']} ";
}
?>
for
<?=$html->link($enquiry['Customer']['name'], array('controller'=>'customers','action'=>'view',$enquiry['Customer']['id']));?>
</h2>
<?=$this->element('pdf_created_message'); ?>
<?
switch($docType) {
case 'quote':
echo $this->element('document_quote_view');

View file

@ -1,13 +1,4 @@
<h2>Quote: <?=$html->link($enquiry['Enquiry']['title'], array('controller'=>'enquiries','action'=>'view',$enquiry['Enquiry']['id']));?> <?
if($document['Quote']['revision'] > 0) {
echo "Revision {$document['Quote']['revision']} ";
}
?>
for
<?=$html->link($enquiry['Customer']['name'], array('controller'=>'customers','action'=>'view',$enquiry['Customer']['id']));?>
</h2>
<?=$this->element('pdf_created_message'); ?>
<?
echo $form->create('Document',array('type'=>'post','action'=>'edit', 'default'=>false));

View file

@ -21,13 +21,13 @@
$i++;
?>
<tr<?php echo $class;?>>
<td><?php echo $quote['Quote']['revision'];?></td>
<td><?php echo $quote['Document']['revision'];?></td>
<td><?php echo $quote['Currency']['iso4217'];?></td>
<td><?php echo $time->nice($quote['Quote']['created']);?></td>
<td class="actions">
<?php echo $html->link(__('View', true), array('controller'=> 'documents', 'action'=>'view', $quote['Quote']['document_id'])); ?>
<?php echo $html->link(__('Revise', true), array('controller'=>'quotes', 'action'=>'revise', $quote['Quote']['id']));
<?php echo $html->link(__('Revise', true), array('controller'=>'documents', 'action'=>'revise', $quote['Quote']['document_id']));
?>
@ -39,7 +39,7 @@
<div class="actions">
<ul>
<li><?php echo $html->link(__('New Quote', true), array('controller'=> 'documents', 'action'=>'newQuote',$enquiry['Enquiry']['id']));?> </li>
<li><?php echo $html->link(__('New Quote', true), array('controller'=> 'documents', 'action'=>'newDocument/quote/'.$enquiry['Enquiry']['id']));?> </li>
</ul>
</div>

View file

@ -323,7 +323,9 @@
<div class="actions">
<ul>
<li><?php echo $html->link(__('New Invoice', true), array('controller'=>'invoices', 'action' => 'add/enquiryid:'.$enquiry['Enquiry']['id'])); ?></li>
<li><?php //echo $html->link(__('New Invoice', true), array('controller'=>'invoices', 'action' => 'add/enquiryid:'.$enquiry['Enquiry']['id'])); ?>
</li>
<li><?php echo $html->link(__('New Invoice', true), array('controller'=>'documents', 'action' => 'newDocument/invoice/'.$enquiry['Enquiry']['id'])); ?></li>
</ul>
</div>