Documents - make subjects more consistent for outgoing PDFs

Fix bug on packing list view link to job.
This commit is contained in:
Karl Cordes 2022-07-07 15:32:20 +10:00
parent 915ea23de4
commit c506af5531
2 changed files with 50 additions and 30 deletions

View file

@ -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 = <<<EOT
SELECT jobs.id, title FROM jobs
SELECT jobs.id, title FROM jobs
JOIN jobs_purchase_orders as jpo ON (jpo.purchase_order_id = $id AND jpo.job_id = jobs.id)
EOT;
@ -879,11 +877,34 @@ EOT;
return $subject;
}
$subject = 'CMC Technologies Order Acknowledgement: '.$titles[0]['e']['enquiry_title'].' '.$titles[0]['j']['job_title'];
$subject = 'Order Acknowledgement: '.$titles[0]['e']['enquiry_title'].' '.$titles[0]['j']['job_title'];
return $subject;
}
function invoice_email_subject($document) {
$id = $document['Document']['id'];
//print_r($document);
$q = <<<EOT
SELECT i.title as invoice_title, j.title as job_title, e.title as enquiry_title
FROM invoices i
JOIN enquiries e ON i.enquiry_id = e.id
JOIN jobs j on i.job_id = j.id
WHERE i.document_id = $id;
EOT;
$titles = $this->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';
}
}
}

View file

@ -1,5 +1,5 @@
<h2>Packing List: <?=$document['PackingList']['title']?> for <?=$html->link($enquiry['Customer']['name'], '/customers/view/'.$enquiry['Customer']['id']);?></h2>
<h2>Job: <?=$html->link($packing_list['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $invoice['Job']['id']));?></h2>
<h2>Job: <?=$html->link($packing_list['Job']['title'], array('controller'=>'jobs', 'action'=>'view', $packing_list['Job']['id']));?></h2>
<div id="flashMessage" class="message">
</div>