diff --git a/app/controllers/documents_controller.php b/app/controllers/documents_controller.php index 2096220f..039f0dcc 100755 --- a/app/controllers/documents_controller.php +++ b/app/controllers/documents_controller.php @@ -25,7 +25,8 @@ class DocumentsController extends AppController { $this->Session->setFlash(__('Invalid Document.', true)); $this->redirect(array('action'=>'index')); } - $document = $this->Document->read(null,$id); + //$document = $this->Document->read(null,$id); + $document = $this->Document->find('first', array('conditions' => array('Document.id' => $id), 'recursive'=>1)); $this->set('document', $document); @@ -77,6 +78,12 @@ class DocumentsController extends AppController { case 'purchaseOrder': $docTypeElement = 'document_purchase_order_view'; $this->set('currencies', $this->Document->PurchaseOrder->Currency->find('list')); + $this->set('purchaseOrder', $this->Document->PurchaseOrder->find('first', + array('conditions'=> + array('PurchaseOrder.id' => $document['PurchaseOrder']['id']) + ) + )); + break; case 'orderAck': $this->set('currencies', $this->Document->OrderAcknowledgement->Currency->find('list')); @@ -266,7 +273,7 @@ class DocumentsController extends AppController { break; case "purchaseOrder": - $enquiry = $this->Document->OrderAcknowledgement->Enquiry->read(null, $enquiryid); + //$enquiry = $this->Document->OrderAcknowledgement->Enquiry->read(null, $enquiryid); $count = $this->Document->PurchaseOrder->findCount(); $count++; $offset = 2060; @@ -295,9 +302,8 @@ ALEXANDRIA NSW 2015 AUSTRALIA
ENDINSTRUCTIONS; - - - $this->data['Document']['user_id']= $enquiry['Enquiry']['user_id']; + $currentuser = $this->Session->read('Auth.User'); + $this->data['Document']['user_id'] = $currentuser['id']; $this->data['Document']['revision'] = 0; //No revisions for POs. I have decreed it! $this->data['Document']['type'] = 'purchaseOrder'; break; @@ -492,6 +498,31 @@ ENDINSTRUCTIONS; $this->Document->DocPage->deleteAll(array('document_id'=>$docID)); $this->Document->DocPage->updateCounterCache(array('document_id'=>$docID)); + if(isset($this->data['PurchaseOrder'])) { + //Delete all the existing JobPurchaseOrder relationships for this PO. + //Fuck it. @TODO SQL injection potential here. + $query = "DELETE FROM jobs_purchase_orders WHERE purchase_order_id =".$this->data['PurchaseOrder']['id']; + $result = $this->Document->query($query); + + } + + if(isset($this->data['PurchaseOrder']['Job'])) { + //Loop over the submitted Jobs and add them. Fuck CakePHP is a piece of shit. + //This is easier than using the fucking built in crap that doesnt work. + //Fuck everything about this. + $po_id = $this->data['PurchaseOrder']['id']; + foreach($this->data['PurchaseOrder']['Job'] as $job_id) { + $query = "INSERT INTO `quotenik`.`jobs_purchase_orders` (`id`, `job_id`, `purchase_order_id`) VALUES (NULL, '{$job_id}', '{$po_id}');"; + $this->Document->query($query); + } + + $result = $this->Document->PurchaseOrder->saveAll($this->data['PurchaseOrder']); + + + //die(print_r($this->data['PurchaseOrder'])); + //die(print_r($result)); + //die(print_r($this->data)); + } if ($this->Document->saveAll($this->data)) { echo 'SUCCESS'; @@ -851,6 +882,51 @@ ENDINSTRUCTIONS; } + function add_job_items_to_po($job_id, $document_id) { + $this->layout = 'ajax'; + $job = $this->Document->PurchaseOrder->Job->find('first', array('conditions'=>array('Job.id' => $job_id))); + + $orderack = $this->Document->OrderAcknowledgement->find('first', array('conditions'=>array('OrderAcknowledgement.enquiry_id' => $job['Job']['enquiry_id']), 'recursive' => 1)); + + $oa_document = $this->Document->find('first', + array('conditions'=> + array('Document.id' => $orderack['Document']['id'] + ) + ) + ); + + + $destination_document = $this->Document->find('first', array('conditions'=>array('Document.id' => $document_id))); + + $new_items = $this->copy_related($oa_document, 'LineItem', array('id', 'document_id', 'costing_id')); + + $last_item_number = 1.0; + foreach($destination_document['LineItem'] as $item) { + $last_item_number = $item['item_number']; + } + if($last_item_number != 1.0) { //Fuck knows + $last_item_number++; + } + + foreach($new_items as $i => $item) { + $item['item_number'] = $last_item_number++; + $item['document_id'] = $document_id; + $destination_document['LineItem'][] = $item; + } + + + + if ($this->Document->LineItem->saveAll($destination_document['LineItem'])) { + echo 'SUCCESS'; + } + else { + echo 'FAILURE'; + + } + + } + + function costing() { } diff --git a/app/views/documents/add_job_items_to_po.ctp b/app/views/documents/add_job_items_to_po.ctp new file mode 100644 index 00000000..e69de29b diff --git a/app/views/elements/document_purchase_order_view.ctp b/app/views/elements/document_purchase_order_view.ctp index 2bba11f1..25600124 100755 --- a/app/views/elements/document_purchase_order_view.ctp +++ b/app/views/elements/document_purchase_order_view.ctp @@ -1,5 +1,4 @@

Purchase Order:

-

Job:

@@ -26,10 +25,10 @@ input('job', array('id'=>'job_autocomplete', array('label'=>'Job (start typing and select from the list)'))); ?> - Jobs in this Shipment will be updated as "sent" + Items from the OA for this Job will be added automatically to the PO. -
-New blank Purchase Order +New Purchase Order