From c506af55319ea1e5c88baa5793604d3dac77a457 Mon Sep 17 00:00:00 2001 From: Karl Cordes Date: Thu, 7 Jul 2022 15:32:20 +1000 Subject: [PATCH] Documents - make subjects more consistent for outgoing PDFs Fix bug on packing list view link to job. --- app/controllers/documents_controller.php | 78 ++++++++++++------- .../elements/document_packinglist_view.ctp | 2 +- 2 files changed, 50 insertions(+), 30 deletions(-) diff --git a/app/controllers/documents_controller.php b/app/controllers/documents_controller.php index 572c48fd..bec373cc 100755 --- a/app/controllers/documents_controller.php +++ b/app/controllers/documents_controller.php @@ -261,13 +261,13 @@ class DocumentsController extends AppController { //This is not ideal. But nothing else is either. $sourceDoc = $this->Document->find('first', array('conditions' => array('Document.id' => $source_document_id))); if($sourceDoc['Document']['type'] == 'orderAck') { - $oa_attribues = array( + $oa_attributes = array( 'ship_via', 'fob', 'estimated_delivery' ); - foreach($oa_attribues as $attr) { + foreach($oa_attributes as $attr) { $this->data['Invoice'][$attr] = $sourceDoc['OrderAcknowledgement'][$attr]; } } @@ -360,19 +360,21 @@ ENDINSTRUCTIONS; //This is not ideal. But nothing else is either. $sourceDoc = $this->Document->find('first', array('conditions' => array('Document.id' => $source_document_id))); - $source_attribues = array( - 'ship_via', - 'fob', - 'estimated_delivery' - ); - + if($sourceDoc['Document']['type'] == 'orderAck') { - foreach($oa_attribues as $attr) { + foreach($source_attributes as $attr) { $this->data['PackingList'][$attr] = $sourceDoc['OrderAcknowledgement'][$attr]; } } if($sourceDoc['Document']['type'] == 'invoice') { - foreach($oa_attribues as $attr) { + + $source_attributes = array( + 'ship_via', + 'fob' + ); + + + foreach($source_attributes as $attr) { $this->data['PackingList'][$attr] = $sourceDoc['Invoice'][$attr]; } } @@ -762,7 +764,6 @@ ENDINSTRUCTIONS; $template_name = 'pdf_packinglist'; break; - } if($document['Document']['revision'] > 0) { @@ -813,8 +814,7 @@ ENDINSTRUCTIONS; $enquiry = $this->Document->Quote->Enquiry->read(null, $document['Quote']['enquiry_id']); $this->set('enquiry', $enquiry); } - - + function email_format($a) { return "<".$a.">"; } @@ -823,11 +823,9 @@ ENDINSTRUCTIONS; // Do a bunch of queries to build a subject line for PO emails. function po_email_subject($document) { $id = $document['id']; - $subject = 'CMC Technologies Purchase Order: '.$document['title']; - $q = <<Document->query($q); + + if(count($titles) < 1) { + // This probably shouldn't happen, but who knows. + $subject = 'Invoice'; + return $subject; + } + + $subject = 'Invoice: '.$titles[0]['i']['invoice_title'].' '.$titles[0]['e']['enquiry_title'].' '.$titles[0]['j']['job_title']; + return $subject; + } + + + /** * Email the PDF(document + attachments) for this Document to a Recipient (Customer or Principle). * @@ -896,7 +917,7 @@ EOT; $this->Email->smtpOptions = Configure::read('smtp_settings'); $this->Email->delivery = 'smtp'; - $document = $this->Document->read(null,$id); + $document = $this->Document->read(null,$id); if(empty($document['Document']['pdf_filename'])) { $this->Session->setFlash(__('Error. Please generate the PDF before attempting to email it', true)); @@ -911,13 +932,13 @@ EOT; $attachment_files[] = $attachment['Attachment']['file']; } $this->Email->attachments = $attachment_files; - + } $enquiry = $this->Document->getEnquiry($document); $this->Email->to = $this->email_format($enquiry['Contact']['email']); - + $this->Email->cc = array($this->email_format($enquiry['User']['email'])); $this->Email->bcc = array($this->email_format('carpis@cmctechnologies.com.au')); @@ -929,20 +950,19 @@ EOT; $template = $docType.'_email'; $subject = $enquiry['Enquiry']['title'].' '; - + + switch($docType) { case 'quote': - $subject .= " Quotation"; + $subject = "Quotation: ".$enquiry['Enquiry']['title']; break; case 'invoice': - $subject .= " Invoice"; + $subject = $this->invoice_email_subject($document); $this->set('invoice', $this->Document->Invoice->find('first', array('conditions'=>array('Invoice.id'=>$document['Invoice']['id'])))); + $this->set('job', $this->Document->Invoice->Job->find('first', array('conditions'=>array('Job.id'=>$document['Invoice']['job_id'])))); break; case 'purchaseOrder': - $subject .= " Purchase Order"; - - - + $subject .= "Purchase Order"; $primary_contact = $this->Document->User->find('first', array('conditions'=>array('User.principle_id' => $document['PurchaseOrder']['principle_id'],'User.primary_contact' => 1))); if(empty($primary_contact)) { @@ -962,7 +982,7 @@ EOT; $this->set('job', $this->Document->OrderAcknowledgement->Job->find('first', array('conditions'=>array('Job.id'=>$document['OrderAcknowledgement']['job_id'])))); if ($document['OrderAcknowledgement']['signature_required']) { $template = 'orderAck_email_signature_required'; - } + } } diff --git a/app/views/elements/document_packinglist_view.ctp b/app/views/elements/document_packinglist_view.ctp index 68d3faec..051c5a6b 100755 --- a/app/views/elements/document_packinglist_view.ctp +++ b/app/views/elements/document_packinglist_view.ctp @@ -1,5 +1,5 @@

Packing List: for link($enquiry['Customer']['name'], '/customers/view/'.$enquiry['Customer']['id']);?>

-

Job: link($packing_list['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $invoice['Job']['id']));?>

+

Job: link($packing_list['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $packing_list['Job']['id']));?>