cmc-sales/php/app/views/quotes/pdf.ctp

87 lines
4.8 KiB
PHP
Executable file

<?php
// Generate Quote PDF by calling the Go service instead of TCPDF.
$goBaseUrl = AppController::getGoBaseUrlOrFail();
$goEndpoint = $goBaseUrl . '/go/pdf/generate-quote';
$outputDir = Configure::read('pdf_directory');
$lineItems = array();
if (isset($products) && is_array($products)) {
foreach ($products as $li) {
$lineItems[] = array(
'item_number' => isset($li['item_number']) ? $li['item_number'] : '',
'quantity' => isset($li['quantity']) ? $li['quantity'] : '',
'title' => isset($li['title']) ? $li['title'] : '',
'description' => isset($li['description']) ? $li['description'] : '',
'unit_price' => isset($li['gross_unit_price']) ? floatval($li['gross_unit_price']) : 0.0,
'total_price' => isset($li['gross_price']) ? floatval($li['gross_price']) : 0.0,
'net_unit_price' => isset($li['net_unit_price']) ? floatval($li['net_unit_price']) : 0.0,
'net_price' => isset($li['net_price']) ? floatval($li['net_price']) : 0.0,
'discount_percent' => isset($li['discount_percent']) ? floatval($li['discount_percent']) : 0.0,
'discount_amount_unit' => isset($li['discount_amount_unit']) ? floatval($li['discount_amount_unit']) : 0.0,
'discount_amount_total' => isset($li['discount_amount_total']) ? floatval($li['discount_amount_total']) : 0.0,
'option' => isset($li['option']) ? intval($li['option']) : 0,
'has_text_prices' => isset($li['has_text_prices']) ? (bool)$li['has_text_prices'] : false,
'unit_price_string' => isset($li['unit_price_string']) ? $li['unit_price_string'] : '',
'gross_price_string' => isset($li['gross_price_string']) ? $li['gross_price_string'] : ''
);
}
}
$payload = array(
'document_id' => intval($quote['Quote']['id']),
'cmc_reference' => $enquiry['Enquiry']['title'],
'revision' => intval($quote['Quote']['revision']),
'created_date' => date('Y-m-d', strtotime($enquiry['Enquiry']['created'])),
'created_date_string' => date('j M Y', strtotime($enquiry['Enquiry']['created'])),
'date_issued' => isset($quote['Quote']['date_issued']) ? $quote['Quote']['date_issued'] : '',
'customer_name' => $enquiry['Customer']['name'],
'contact_email' => $enquiry['Contact']['email'],
'contact_name' => $enquiry['Contact']['first_name'].' '.$enquiry['Contact']['last_name'],
'user_first_name' => $enquiry['User']['first_name'],
'user_last_name' => $enquiry['User']['last_name'],
'user_email' => $enquiry['User']['email'],
'currency_symbol' => isset($quote['Currency']['symbol']) ? $quote['Currency']['symbol'] : '$',
'currency_code' => isset($quote['Currency']['iso4217']) ? $quote['Currency']['iso4217'] : 'AUD',
'show_gst' => (bool)$enquiry['Enquiry']['gst'],
'commercial_comments' => isset($document['Quote']['commercial_comments']) ? $document['Quote']['commercial_comments'] : '',
'delivery_time' => isset($document['Quote']['delivery_time']) ? $document['Quote']['delivery_time'] : '',
'payment_terms' => isset($document['Quote']['payment_terms']) ? $document['Quote']['payment_terms'] : '',
'daysValid' => isset($document['Quote']['days_valid']) ? intval($document['Quote']['days_valid']) : 0,
'delivery_point' => isset($document['Quote']['delivery_point']) ? $document['Quote']['delivery_point'] : '',
'exchange_rate' => isset($document['Quote']['exchange_rate']) ? $document['Quote']['exchange_rate'] : '',
'customs_duty' => isset($document['Quote']['customs_duty']) ? $document['Quote']['customs_duty'] : '',
'gst_phrase' => isset($gstPhrase) ? $gstPhrase : '',
'sales_engineer' => isset($user['User']['first_name']) ? $user['User']['first_name'].' '.$user['User']['last_name'] : '',
'bill_to' => isset($enquiry['BillingAddress']['id']) ? formatAddress($enquiry['BillingAddress']) : '',
'ship_to' => isset($enquiry['ShippingAddress']['id']) ? formatAddress($enquiry['ShippingAddress']) : '',
'line_items' => $lineItems,
'pages' => array_map(function($p) { return $p['content']; }, isset($quote['QuotePage']) ? $quote['QuotePage'] : array()),
'output_dir' => $outputDir,
);
$ch = curl_init($goEndpoint);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$curlErr = curl_error($ch);
curl_close($ch);
if ($httpCode < 200 || $httpCode >= 300) {
echo "<p>Failed to generate Quote PDF via Go service (HTTP $httpCode).";
if ($curlErr) {
echo " Error: $curlErr";
}
echo "</p>";
exit;
}
?>
<script type="text/javascript">
window.location.replace("/quotes/view/<?=$quote['Quote']['id']?>");
</script>