Supporting quote generation
This commit is contained in:
parent
118a10b6f4
commit
3bfaa5b0fd
|
|
@ -610,12 +610,15 @@ func CountPages(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("CountPages: Attempting to count pages for file: %s", req.FilePath)
|
// Normalize path: remove double slashes
|
||||||
|
normalizedPath := strings.ReplaceAll(req.FilePath, "//", "/")
|
||||||
|
|
||||||
|
log.Printf("CountPages: Attempting to count pages for file: %s", normalizedPath)
|
||||||
|
|
||||||
// Count pages in the PDF file
|
// Count pages in the PDF file
|
||||||
pageCount, err := pdf.CountPDFPages(req.FilePath)
|
pageCount, err := pdf.CountPDFPages(normalizedPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("CountPages: error counting pages in %s: %v", req.FilePath, err)
|
log.Printf("CountPages: error counting pages in %s: %v", normalizedPath, err)
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
_ = json.NewEncoder(w).Encode(map[string]interface{}{
|
_ = json.NewEncoder(w).Encode(map[string]interface{}{
|
||||||
|
|
@ -625,7 +628,7 @@ func CountPages(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("CountPages: Successfully counted %d pages in %s", pageCount, req.FilePath)
|
log.Printf("CountPages: Successfully counted %d pages in %s", pageCount, normalizedPath)
|
||||||
w.Header().Set("Content-Type", "application/json")
|
w.Header().Set("Content-Type", "application/json")
|
||||||
_ = json.NewEncoder(w).Encode(map[string]int{"page_count": pageCount})
|
_ = json.NewEncoder(w).Encode(map[string]int{"page_count": pageCount})
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,7 @@ func (g *HTMLDocumentGenerator) GenerateInvoicePDF(data *InvoicePDFData) (string
|
||||||
}
|
}
|
||||||
filename := fmt.Sprintf("%s.pdf", filenameBase)
|
filename := fmt.Sprintf("%s.pdf", filenameBase)
|
||||||
pdfPath := filepath.Join(g.outputDir, filename)
|
pdfPath := filepath.Join(g.outputDir, filename)
|
||||||
|
fmt.Printf("=== HTML Generator: Invoice filename generation - invoiceNumber='%s', filenameBase='%s', final filename='%s' ===\n", invoiceNumber, filenameBase, filename)
|
||||||
|
|
||||||
if err := g.htmlToPDF(tempHTML, pdfPath); err != nil {
|
if err := g.htmlToPDF(tempHTML, pdfPath); err != nil {
|
||||||
return "", fmt.Errorf("failed to convert HTML to PDF (second pass): %w", err)
|
return "", fmt.Errorf("failed to convert HTML to PDF (second pass): %w", err)
|
||||||
|
|
@ -195,6 +196,10 @@ func (g *HTMLDocumentGenerator) GenerateQuotePDF(data *QuotePDFData) (string, er
|
||||||
if data.Document != nil {
|
if data.Document != nil {
|
||||||
log.Printf("=== HTML Generator: Document not nil, CmcReference='%s'", data.Document.CmcReference)
|
log.Printf("=== HTML Generator: Document not nil, CmcReference='%s'", data.Document.CmcReference)
|
||||||
quoteNumber = data.Document.CmcReference
|
quoteNumber = data.Document.CmcReference
|
||||||
|
if quoteNumber == "" {
|
||||||
|
// Strong fallback so we never emit a leading underscore filename
|
||||||
|
quoteNumber = fmt.Sprintf("Quote-%d", data.Document.ID)
|
||||||
|
}
|
||||||
if data.Document.Revision > 0 {
|
if data.Document.Revision > 0 {
|
||||||
quoteNumber = fmt.Sprintf("%s_%d", quoteNumber, data.Document.Revision)
|
quoteNumber = fmt.Sprintf("%s_%d", quoteNumber, data.Document.Revision)
|
||||||
}
|
}
|
||||||
|
|
@ -224,11 +229,27 @@ func (g *HTMLDocumentGenerator) GenerateQuotePDF(data *QuotePDFData) (string, er
|
||||||
tempMergedPath := filepath.Join(g.outputDir, fmt.Sprintf("%s_merged_temp.pdf", filenameBase))
|
tempMergedPath := filepath.Join(g.outputDir, fmt.Sprintf("%s_merged_temp.pdf", filenameBase))
|
||||||
if err := MergePDFs(pdfPath, termsPath, tempMergedPath); err != nil {
|
if err := MergePDFs(pdfPath, termsPath, tempMergedPath); err != nil {
|
||||||
fmt.Printf("=== HTML Generator: Warning - could not merge T&C PDF: %v. Returning quote without T&C.\n", err)
|
fmt.Printf("=== HTML Generator: Warning - could not merge T&C PDF: %v. Returning quote without T&C.\n", err)
|
||||||
|
fmt.Printf("=== HTML Generator: Checking if pdfPath exists: %s\n", pdfPath)
|
||||||
|
if stat, err := os.Stat(pdfPath); err == nil {
|
||||||
|
fmt.Printf("=== HTML Generator: pdfPath exists, size=%d bytes\n", stat.Size())
|
||||||
|
}
|
||||||
return filename, nil
|
return filename, nil
|
||||||
}
|
}
|
||||||
|
fmt.Printf("=== HTML Generator: Merge succeeded, replacing original PDF\n")
|
||||||
// Replace original with merged version
|
// Replace original with merged version
|
||||||
if err := os.Rename(tempMergedPath, pdfPath); err != nil {
|
if err := os.Rename(tempMergedPath, pdfPath); err != nil {
|
||||||
fmt.Printf("=== HTML Generator: Warning - could not replace PDF: %v\n", err)
|
fmt.Printf("=== HTML Generator: Warning - could not replace PDF: %v\n", err)
|
||||||
|
fmt.Printf("=== HTML Generator: tempMergedPath: %s\n", tempMergedPath)
|
||||||
|
fmt.Printf("=== HTML Generator: pdfPath: %s\n", pdfPath)
|
||||||
|
} else {
|
||||||
|
fmt.Printf("=== HTML Generator: Replaced PDF successfully\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify the final file exists
|
||||||
|
if stat, err := os.Stat(pdfPath); err == nil {
|
||||||
|
fmt.Printf("=== HTML Generator: Final PDF verified, size=%d bytes\n", stat.Size())
|
||||||
|
} else {
|
||||||
|
fmt.Printf("=== HTML Generator: ERROR - Final PDF does not exist after merge: %v\n", err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -867,19 +867,27 @@ ENDINSTRUCTIONS;
|
||||||
//
|
//
|
||||||
switch($docType) {
|
switch($docType) {
|
||||||
case "quote":
|
case "quote":
|
||||||
// Use enquiry title, or fall back to cmc_reference, or document ID
|
// Use enquiry title, or fall back to cmc_reference, or document ID
|
||||||
if (!empty($enquiry['Enquiry']['title'])) {
|
if (!empty($enquiry['Enquiry']['title'])) {
|
||||||
$filename = $enquiry['Enquiry']['title'];
|
$filename = $enquiry['Enquiry']['title'];
|
||||||
} elseif (!empty($document['Document']['cmc_reference'])) {
|
} elseif (!empty($document['Document']['cmc_reference'])) {
|
||||||
$filename = $document['Document']['cmc_reference'];
|
$filename = $document['Document']['cmc_reference'];
|
||||||
} else {
|
} else {
|
||||||
$filename = 'Quote-' . $document['Document']['id'];
|
$filename = 'Quote-' . $document['Document']['id'];
|
||||||
}
|
}
|
||||||
|
$this->set('docTitle', $enquiry['Enquiry']['title']);
|
||||||
|
$this->set('job', $job);
|
||||||
|
$this->set('issue_date_string', date('d F Y', strtotime($document['Quote']['issue_date'])));
|
||||||
|
$this->set('ship_via', $document['Quote']['ship_via']);
|
||||||
|
$this->set('fob', $document['Quote']['fob']);
|
||||||
|
$template_name = 'pdf_quote';
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "invoice":
|
||||||
$filename = $document['Invoice']['title'];
|
$filename = $document['Invoice']['title'];
|
||||||
$this->set('docTitle', $document['Invoice']['title']);
|
$this->set('docTitle', $document['Invoice']['title']);
|
||||||
$this->set('job', $this->Document->Invoice->Job->find('first', array('conditions'=>array('Job.id'=>$document['Invoice']['job_id']))));
|
$this->set('job', $this->Document->Invoice->Job->find('first', array('conditions'=>array('Job.id'=>$document['Invoice']['job_id']))));
|
||||||
$this->set('issue_date_string', date('d F Y', strtotime($document['Invoice']['issue_date'])));
|
$this->set('issue_date_string', date('d F Y', strtotime($document['Invoice']['issue_date'])));
|
||||||
|
|
||||||
$this->set('ship_via', $document['Invoice']['ship_via']);
|
$this->set('ship_via', $document['Invoice']['ship_via']);
|
||||||
$this->set('fob', $document['Invoice']['fob']);
|
$this->set('fob', $document['Invoice']['fob']);
|
||||||
$template_name = 'pdf_invoice';
|
$template_name = 'pdf_invoice';
|
||||||
|
|
@ -948,34 +956,15 @@ ENDINSTRUCTIONS;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($document['Document']['revision'] > 0) {
|
// Don't set filename here - let the Go service and view handle it
|
||||||
$filename = $filename.'_'.$document['Document']['revision'].'.pdf';
|
// The filename will be set by the pdf_* view after Go generates the PDF
|
||||||
}
|
|
||||||
else {
|
$this->set('filename', '');
|
||||||
$filename = $filename.'.pdf';
|
$this->set('docType', $docType);
|
||||||
}
|
$this->set('docTypeFullName', strtoupper($docTypeFullName));
|
||||||
|
$this->set('currency',$currency);
|
||||||
$this->set('filename', $filename);
|
$this->set('currencyCode', isset($currencyCode) ? $currencyCode : 'AUD');
|
||||||
$document['Document']['pdf_filename'] = $filename;
|
$this->set('currencySymbol', isset($currencySymbol) ? $currencySymbol : '$');
|
||||||
$document['Document']['pdf_created_at'] = date('Y-m-d H:i:s');
|
|
||||||
$document['Document']['pdf_created_by_user_id'] = $this->getCurrentUserID();
|
|
||||||
if($this->Document->save($document)) {
|
|
||||||
//echo "Set pdf_filename attritbute to: ".$filename;
|
|
||||||
|
|
||||||
// Count pages and update doc_page_count
|
|
||||||
App::import('Vendor','pagecounter');
|
|
||||||
$pageCounter = new PageCounter();
|
|
||||||
$pdfPath = $pdf_dir . $filename;
|
|
||||||
$pageCount = $pageCounter->count($pdfPath);
|
|
||||||
if ($pageCount > 0) {
|
|
||||||
$this->Document->id = $document['Document']['id'];
|
|
||||||
$this->Document->saveField('doc_page_count', $pageCount);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
//echo 'Failed to set pdf_filename to: '.$filename;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$colWidths = array(
|
$colWidths = array(
|
||||||
'item' => '7%',
|
'item' => '7%',
|
||||||
|
|
|
||||||
3
php/app/vendors/pagecounter.php
vendored
3
php/app/vendors/pagecounter.php
vendored
|
|
@ -9,7 +9,7 @@ class PageCounter {
|
||||||
* Returns the page count or null if unable to determine.
|
* Returns the page count or null if unable to determine.
|
||||||
*/
|
*/
|
||||||
function count($file) {
|
function count($file) {
|
||||||
error_log("PageCounter: Attempting to count pages for file: $file");
|
error_log("PageCounter: START - Attempting to count pages for file: $file");
|
||||||
|
|
||||||
if (!file_exists($file) || !is_readable($file)) {
|
if (!file_exists($file) || !is_readable($file)) {
|
||||||
error_log("PageCounter: File does not exist or is not readable: $file");
|
error_log("PageCounter: File does not exist or is not readable: $file");
|
||||||
|
|
@ -17,6 +17,7 @@ class PageCounter {
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
error_log("PageCounter: File exists and is readable, calling getGoBaseUrlOrFail()");
|
||||||
// Get the Go base URL from config
|
// Get the Go base URL from config
|
||||||
App::import('Controller', 'App');
|
App::import('Controller', 'App');
|
||||||
$appController = new AppController();
|
$appController = new AppController();
|
||||||
|
|
|
||||||
|
|
@ -42,39 +42,23 @@ $pagecounter = new PageCounter();
|
||||||
<?php foreach($attachments as $attachment) { ?>
|
<?php foreach($attachments as $attachment) { ?>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
// Debug log for page counter paths/results
|
// Normalize attachment path
|
||||||
$debugPath = APP.'webroot/pdf/pagecounter_debug.txt';
|
// Database stores paths like /var/www/cmc-sales/app/webroot/attachments_files/...
|
||||||
// Normalize attachment path: handle double slashes and ensure correct base path
|
// Docker mounts this at /var/www/cmc-sales/app/webroot/attachments_files/ so paths are correct as-is
|
||||||
$rawPath = $attachment['Attachment']['file'];
|
$rawPath = $attachment['Attachment']['file'];
|
||||||
|
|
||||||
// Log the raw path from database
|
|
||||||
file_put_contents($debugPath, "Attachment: {$attachment['Attachment']['name']}\nRaw DB path: {$rawPath}\n", FILE_APPEND);
|
|
||||||
|
|
||||||
// If path starts with /webroot, prefix with APP; otherwise use as-is
|
|
||||||
if (strpos($rawPath, '/webroot/') === 0 || strpos($rawPath, '//webroot/') === 0) {
|
|
||||||
$attachmentPath = APP . ltrim($rawPath, '/');
|
|
||||||
} elseif (strpos($rawPath, APP) === 0) {
|
|
||||||
// Already has full APP path, use as-is
|
|
||||||
$attachmentPath = $rawPath;
|
|
||||||
} else {
|
|
||||||
// Default: prefix with APP
|
|
||||||
$attachmentPath = APP . ltrim($rawPath, '/');
|
|
||||||
}
|
|
||||||
// Remove any double slashes
|
// Remove any double slashes
|
||||||
$attachmentPath = preg_replace('#/+#', '/', $attachmentPath);
|
$attachmentPath = preg_replace('#/+#', '/', $rawPath);
|
||||||
|
|
||||||
$exists = file_exists($attachmentPath) ? 'yes' : 'no';
|
|
||||||
$readable = is_readable($attachmentPath) ? 'yes' : 'no';
|
|
||||||
file_put_contents($debugPath, "Computed path: {$attachmentPath}\nExists: {$exists}, Readable: {$readable}\n", FILE_APPEND);
|
|
||||||
|
|
||||||
$pagecount = '';
|
$pagecount = '';
|
||||||
|
|
||||||
if($attachment['Attachment']['type'] == 'application/pdf') {
|
if($attachment['Attachment']['type'] == 'application/pdf') {
|
||||||
$count = $pagecounter->count($attachmentPath);
|
$count = $pagecounter->count($attachmentPath);
|
||||||
$pagecount = '('.$count.' pages)';
|
if ($count !== null && $count > 0) {
|
||||||
file_put_contents($debugPath, "Count result: {$count}\n---\n", FILE_APPEND);
|
$pagecount = '(' . $count . ' pages)';
|
||||||
} else {
|
} else {
|
||||||
file_put_contents($debugPath, "Skipped (non-pdf)\n---\n", FILE_APPEND);
|
$pagecount = '(page count unavailable)';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
<?= $attachment['Attachment']['name']; ?> <?= $pagecount ?><br>
|
<?= $attachment['Attachment']['name']; ?> <?= $pagecount ?><br>
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,17 @@
|
||||||
<?php
|
<?php
|
||||||
// Generate the Invoice PDF by calling the Go service instead of TCPDF.
|
// Generate the Invoice PDF by calling the Go service instead of TCPDF.
|
||||||
|
error_log("=== pdf_invoice.ctp: Starting invoice PDF generation ===");
|
||||||
|
error_log("=== pdf_invoice.ctp: Document ID: " . (isset($document['Document']['id']) ? $document['Document']['id'] : 'UNDEFINED') . " ===");
|
||||||
|
|
||||||
|
if (!isset($document) || !isset($document['Document'])) {
|
||||||
|
error_log("=== pdf_invoice.ctp: ERROR - Document not set in view! ===");
|
||||||
|
echo "ERROR: Document data not available in view";
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
$goBaseUrl = AppController::getGoBaseUrlOrFail();
|
$goBaseUrl = AppController::getGoBaseUrlOrFail();
|
||||||
$goEndpoint = $goBaseUrl . '/go/api/pdf/generate-invoice';
|
$goEndpoint = $goBaseUrl . '/go/api/pdf/generate-invoice';
|
||||||
|
error_log("=== pdf_invoice.ctp: Go endpoint: " . $goEndpoint . " ===");
|
||||||
|
|
||||||
$outputDir = Configure::read('pdf_directory');
|
$outputDir = Configure::read('pdf_directory');
|
||||||
|
|
||||||
|
|
@ -106,9 +115,12 @@ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
||||||
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
|
||||||
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
|
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
|
||||||
|
|
||||||
|
error_log("=== pdf_invoice.ctp: Making curl request to Go service ===");
|
||||||
$response = curl_exec($ch);
|
$response = curl_exec($ch);
|
||||||
|
error_log("=== pdf_invoice.ctp: Curl response received: " . substr($response, 0, 200) . " ===");
|
||||||
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
|
||||||
$curlErr = curl_error($ch);
|
$curlErr = curl_error($ch);
|
||||||
|
error_log("=== pdf_invoice.ctp: HTTP Code: " . $httpCode . ", Curl Error: " . $curlErr . " ===");
|
||||||
curl_close($ch);
|
curl_close($ch);
|
||||||
|
|
||||||
if ($httpCode < 200 || $httpCode >= 300) {
|
if ($httpCode < 200 || $httpCode >= 300) {
|
||||||
|
|
@ -123,9 +135,50 @@ if ($httpCode < 200 || $httpCode >= 300) {
|
||||||
echo "</p>";
|
echo "</p>";
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
?>
|
|
||||||
|
|
||||||
|
// PDF generated successfully - capture the filename from Go and save to database
|
||||||
|
$result = json_decode($response, true);
|
||||||
|
if (isset($result['filename'])) {
|
||||||
|
$Document = ClassRegistry::init('Document');
|
||||||
|
$Document->id = $document['Document']['id'];
|
||||||
|
$Document->saveField('pdf_filename', $result['filename']);
|
||||||
|
$Document->saveField('pdf_created_at', date('Y-m-d H:i:s'));
|
||||||
|
|
||||||
|
// Get user ID safely
|
||||||
|
$userId = null;
|
||||||
|
if (isset($this->Session)) {
|
||||||
|
$userId = $this->Session->read('Auth.User.id');
|
||||||
|
}
|
||||||
|
if ($userId) {
|
||||||
|
$Document->saveField('pdf_created_by_user_id', $userId);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Count pages using the Go service
|
||||||
|
App::import('Vendor','pagecounter');
|
||||||
|
$pageCounter = new PageCounter();
|
||||||
|
$pdfPath = $outputDir . '/' . $result['filename'];
|
||||||
|
error_log("=== pdf_invoice.ctp: Counting pages for PDF: " . $pdfPath . " ===");
|
||||||
|
$pageCount = $pageCounter->count($pdfPath);
|
||||||
|
error_log("=== pdf_invoice.ctp: Page count result: " . var_export($pageCount, true) . " ===");
|
||||||
|
if ($pageCount !== null && $pageCount > 0) {
|
||||||
|
$Document->saveField('doc_page_count', $pageCount);
|
||||||
|
error_log("=== pdf_invoice.ctp: Saved page count: " . $pageCount . " ===");
|
||||||
|
} else {
|
||||||
|
error_log("=== pdf_invoice.ctp: Page count was null or 0, not saving ===");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
error_log("=== pdf_invoice.ctp: About to redirect to /documents/view/" . $document['Document']['id'] . " ===");
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="refresh" content="0;url=/documents/view/<?=$document['Document']['id']?>">
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>PDF generated successfully. <a href="/documents/view/<?=$document['Document']['id']?>">Click here if you are not redirected</a>.</p>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
window.location.replace("/documents/view/<?=$document['Document']['id']?>");
|
window.location.replace("/documents/view/<?=$document['Document']['id']?>");
|
||||||
</script>
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
@ -92,10 +92,30 @@ if ($httpCode < 200 || $httpCode >= 300) {
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
// PDF generated successfully - now count pages and update database
|
// PDF generated successfully - now save metadata and count pages
|
||||||
$result = json_decode($response, true);
|
$result = json_decode($response, true);
|
||||||
if (isset($result['filename'])) {
|
if (isset($result['filename'])) {
|
||||||
|
// Build path, removing any double slashes
|
||||||
$pdfPath = $outputDir . '/' . $result['filename'];
|
$pdfPath = $outputDir . '/' . $result['filename'];
|
||||||
|
$pdfPath = preg_replace('#/+#', '/', $pdfPath);
|
||||||
|
|
||||||
|
// Update database with PDF metadata
|
||||||
|
$Document = ClassRegistry::init('Document');
|
||||||
|
$Document->id = $document['Document']['id'];
|
||||||
|
$Document->saveField('pdf_filename', $result['filename']);
|
||||||
|
$Document->saveField('pdf_created_at', date('Y-m-d H:i:s'));
|
||||||
|
|
||||||
|
// Get user ID safely (match invoice logic)
|
||||||
|
$userId = null;
|
||||||
|
if (isset($this->Session)) {
|
||||||
|
$userId = $this->Session->read('Auth.User.id');
|
||||||
|
}
|
||||||
|
if (!$userId && isset($_SESSION['Auth']['User']['id'])) {
|
||||||
|
$userId = $_SESSION['Auth']['User']['id'];
|
||||||
|
}
|
||||||
|
if ($userId) {
|
||||||
|
$Document->saveField('pdf_created_by_user_id', $userId);
|
||||||
|
}
|
||||||
|
|
||||||
// Count pages using the Go service
|
// Count pages using the Go service
|
||||||
App::import('Vendor','pagecounter');
|
App::import('Vendor','pagecounter');
|
||||||
|
|
@ -103,14 +123,21 @@ if (isset($result['filename'])) {
|
||||||
$pageCount = $pageCounter->count($pdfPath);
|
$pageCount = $pageCounter->count($pdfPath);
|
||||||
|
|
||||||
if ($pageCount > 0) {
|
if ($pageCount > 0) {
|
||||||
// Update the document with the page count
|
|
||||||
$Document = ClassRegistry::init('Document');
|
|
||||||
$Document->id = $document['Document']['id'];
|
|
||||||
$Document->saveField('doc_page_count', $pageCount);
|
$Document->saveField('doc_page_count', $pageCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
<!DOCTYPE html>
|
||||||
<script type="text/javascript">
|
<html>
|
||||||
window.location.replace("/documents/view/<?=$document['Document']['id']?>");
|
<head>
|
||||||
</script>
|
<meta http-equiv="refresh" content="0;url=/documents/view/<?=$document['Document']['id']?>" />
|
||||||
|
<title>Redirecting...</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<p>PDF generated successfully. Redirecting back to quote...</p>
|
||||||
|
<p><a href="/documents/view/<?=$document['Document']['id']?>">Click here if not redirected</a></p>
|
||||||
|
<script type="text/javascript">
|
||||||
|
window.location.replace("/documents/view/<?=$document['Document']['id']?>");
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Reference in a new issue