Generate shipping instructions on PO views #73

This commit is contained in:
Karl Cordes 2023-11-17 14:26:38 +11:00
parent 8b74fe4d86
commit 26257567d3
5 changed files with 81 additions and 12 deletions

View file

@ -526,8 +526,7 @@ ENDINSTRUCTIONS;
//Delete all the existing JobPurchaseOrder relationships for this PO. //Delete all the existing JobPurchaseOrder relationships for this PO.
//Fuck it. @TODO SQL injection potential here. //Fuck it. @TODO SQL injection potential here.
$query = "DELETE FROM jobs_purchase_orders WHERE purchase_order_id =".$this->data['PurchaseOrder']['id']; $query = "DELETE FROM jobs_purchase_orders WHERE purchase_order_id =".$this->data['PurchaseOrder']['id'];
$result = $this->Document->query($query); $this->Document->query($query);
} }
if(isset($this->data['PurchaseOrder']['Job'])) { if(isset($this->data['PurchaseOrder']['Job'])) {
@ -1062,6 +1061,65 @@ EOT;
} }
// generateShippingReference builds the Shipping Instructions: with the PO number and job titles.
function generateShippingInstructions($document_id) {
$this->layout = 'ajax';
$po = $this->Document->PurchaseOrder->find('first',
array('conditions'=>
array('Document.id' => $document_id)
)
);
// TODO SQL injection risk. Need to rewrite this whole rickety thing..
$query = 'select j.title as job_title, po.title as po_title from jobs_purchase_orders jpo JOIN jobs j on j.id = jpo.job_id JOIN purchase_orders po ON po.id= jpo.purchase_order_id WHERE jpo.purchase_order_id = '.$po['PurchaseOrder']['id'].';';
$results = $this->Document->query($query);
//echo "<pre>";
//print_r($results);
//echo "</pre>";
$label = "";
if (count($results) == 0) {
return;
}
if (count($results) > 0) {
$label = $results[0]["po"]["po_title"];
}
foreach ($results as $result) {
$label .= " / ". $result["j"]["job_title"];
}
echo <<<ENDINSTRUCTIONS
<b>PART SHIPMENT:</b> Not Acceptable - please advise ASAP if production of an Item will Delay the Dispatch of the Complete Order by the Date Required stated above.<br>
<b>INSURANCE:</b> DO NOT INSURE - Insurance effected by CMC<br>
<b>SECURITY:</b> It is essential that the cargo is prepared & handled so as not to compromise its security standing.<br>
<b>SHIPMENT MARKINGS:</b><br>
(Please put red fragile stickers on boxing)<br>
CMC TECHNOLOGIES PTY LTD<br>
UNIT 19, 77 BOURKE ROAD<br>
ALEXANDRIA NSW 2015 AUSTRALIA<br>
REF: $label
ENDINSTRUCTIONS;
/*if($this->Document->PurchaseOrder->save($po["PurchaseOrder"])) {
echo "SUCCESS"; //THIS IS SO STUPID.
}
else {
echo "FAILURE";
}*/
}
function add_job_items_to_po($job_id, $document_id) { function add_job_items_to_po($job_id, $document_id) {
$this->layout = 'ajax'; $this->layout = 'ajax';
$job = $this->Document->PurchaseOrder->Job->find('first', array('conditions'=>array('Job.id' => $job_id))); $job = $this->Document->PurchaseOrder->Job->find('first', array('conditions'=>array('Job.id' => $job_id)));

View file

@ -50,6 +50,9 @@
echo $form->input('PurchaseOrder.deliver_to'); echo $form->input('PurchaseOrder.deliver_to');
echo $form->input('PurchaseOrder.shipping_instructions'); echo $form->input('PurchaseOrder.shipping_instructions');
?>
<button id="generateShippingInstructions">Regenerate shipping instructions</button>
<?php
echo $form->end(array('label'=>'Save PurchaseOrder Details', 'id'=>'savePurchaseOrderButton')); echo $form->end(array('label'=>'Save PurchaseOrder Details', 'id'=>'savePurchaseOrderButton'));

View file

@ -555,16 +555,15 @@ $(function() {
var jobs_val = $("#PurchaseOrderJobsText").val(); var jobs_val = $("#PurchaseOrderJobsText").val();
$("#PurchaseOrderJobsText").val(jobs_val +', '+ ui.item.value) $("#PurchaseOrderJobsText").val(jobs_val +', '+ ui.item.value)
console.log(ui.item.id);
console.log(ui.item.id);
console.log(ui.item.value); console.log(ui.item.value);
//POST the job ID to a method on the documents controller to add the LineItems //POST the job ID to a method on the documents controller to add the LineItems
$.post('/documents/add_job_items_to_po/'+ui.item.id+'/'+$("#DocumentId").val(), function(data) { $.post('/documents/add_job_items_to_po/'+ui.item.id+'/'+$("#DocumentId").val(), function(data) {
loadLineItems(); loadLineItems();
saveDocument('Purchase Order'); saveDocument('Purchase Order');
});
});
} }
@ -575,6 +574,15 @@ $(function() {
}); });
$('#generateShippingInstructions').live('click', function(event) {
event.preventDefault();
$.post('/documents/generateShippingInstructions/'+$("#DocumentId").val(), function(data) {
$('#PurchaseOrderShippingInstructions').val(data);
updateTextFields(); //Update the CKEditor instances.
//$("#PurchaseOrderShippingInstructions").ckeditor(config);
});
});
$('.generateCommercialComments').live('click', function(event) { $('.generateCommercialComments').live('click', function(event) {
event.preventDefault(); event.preventDefault();

View file

@ -3,6 +3,6 @@ ID=$(docker ps -qf ancestor='cmc:latest')
docker kill $ID docker kill $ID
sleep 1 sleep 1
docker run -d -p 127.0.0.1:8888:80 \ docker run -d -p 127.0.0.1:8888:80 \
--mount type=bind,source=/home/k/projects/cmc-sales/app/webroot/pdf,target=/var/www/cmc-sales/app/webroot/pdf \ --mount type=bind,source=/home/k/src/cmc-sales/app/webroot/pdf,target=/var/www/cmc-sales/app/webroot/pdf \
--mount type=bind,source=/home/k/projects/cmc-sales/app/webroot/attachments_files,target=/var/www/cmc-sales/app/webroot/attachments_files \ --mount type=bind,source=/home/k/src/cmc-sales/app/webroot/attachments_files,target=/var/www/cmc-sales/app/webroot/attachments_files \
cmc:latest cmc:latest