diff --git a/app/controllers/documents_controller.php b/app/controllers/documents_controller.php index ea42b9c9..8b86a38f 100755 --- a/app/controllers/documents_controller.php +++ b/app/controllers/documents_controller.php @@ -867,13 +867,17 @@ ENDINSTRUCTIONS; $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)) { - $this->Session->setFlash(__('Unable to sent. No primary Principle Contact', true)); + $this->Session->setFlash(__('Unable to send. No primary Principle Contact', true)); $this->redirect(array('action'=>'view/'.$id), null, false); return; } + $this->Email->subject = 'CMC Technologies Purchase Order: '.$document['PurchaseOrder']['title']; - $this->Email->to = $primary_contact['User']['email']; - $this->set('job', $this->Document->PurchaseOrder->Job->find('first', array('conditions'=>array('Job.id'=>$document['OrderAcknowledgement']['job_id'])))); + $this->Email->to = $primary_contact['User']['email']; + $this->Email->replyTo = null; + $this->Email->cc = null; + + $this->set('job', $this->Document->PurchaseOrder->Job->find('first', array('conditions'=>array('Job.id'=>$document['OrderAcknowledgement']['job_id'])))); break; case 'orderAck': $this->set('job', $this->Document->OrderAcknowledgement->Job->find('first', array('conditions'=>array('Job.id'=>$document['OrderAcknowledgement']['job_id'])))); @@ -894,6 +898,7 @@ ENDINSTRUCTIONS; $this->redirect(array('action'=>'view/'.$id), null, false); } else { + print_r($this->Email->smtpError); $this->set('smtp_errors', $this->Email->smtpError); $this->Session->setFlash(__('The Email has NOT been sent. Something went wrong.', true)); $this->redirect(array('action'=>'view/'.$id), null, false); diff --git a/app/controllers/products_controller.php b/app/controllers/products_controller.php index 2f592973..e0756af9 100755 --- a/app/controllers/products_controller.php +++ b/app/controllers/products_controller.php @@ -1,168 +1,201 @@ Product->recursive = 0; - $this->set('products', $this->paginate()); - * - */ - $this->set('principles', $this->Product->Principle->find('all', array('order' => 'Principle.name ASC'))); + $this->set('products', $this->paginate()); + * + */ + $this->set('principles', $this->Product->Principle->find('all', array('order' => 'Principle.name ASC'))); - } - - function view_principle($id = null) { - if(!$id) { - $this->Session->setFlash(__('Invalid Principle ID', true)); - $this->redirect(array('action'=>'index')); } - $this->set('products', $this->Product->find('all', array('conditions'=>array('Product.principle_id'=>$id),'order'=>'Product.title ASC'))); - $this->set('principle', $this->Product->Principle->findById($id)); - } - function view($id = null) { - if (!$id) { - $this->Session->setFlash(__('Invalid Product.', true)); - $this->redirect(array('action'=>'index')); + function view_principle($id = null) { + if(!$id) { + $this->Session->setFlash(__('Invalid Principle ID', true)); + $this->redirect(array('action'=>'index')); + } + $this->set('products', $this->Product->find('all', array('conditions'=>array('Product.principle_id'=>$id),'order'=>'Product.title ASC'))); + $this->set('principle', $this->Product->Principle->findById($id)); } - $this->set('product', $this->Product->read(null, $id)); - //$this->set('product', $this->Product->find('first', array('conditions' => array('Product.id'=>$id), 'recursive' => 1))); + function view($id = null) { + if (!$id) { + $this->Session->setFlash(__('Invalid Product.', true)); + $this->redirect(array('action'=>'index')); + } + $this->set('product', $this->Product->read(null, $id)); - $this->set('options', $this->Product->ProductOptionsCategory->find('all', array('conditions' => array('ProductOptionsCategory.product_id'=>$id), 'order'=>'ProductOptionsCategory.location ASC'))); + //$this->set('product', $this->Product->find('first', array('conditions' => array('Product.id'=>$id), 'recursive' => 1))); - $this->set('files', $this->Product->ProductAttachment->findAllByProductId($id)); - $this->set('number_of_files', $this->Product->ProductAttachment->find('count', array('conditions' => array('ProductAttachment.product_id'=>$id)))); - } + $this->set('options', $this->Product->ProductOptionsCategory->find('all', array('conditions' => array('ProductOptionsCategory.product_id'=>$id), 'order'=>'ProductOptionsCategory.location ASC'))); - function add() { - if (!empty($this->data)) { - $this->Product->create(); - - if ($this->Product->save($this->data)) { - $this->Session->setFlash(__('The Product has been saved', true)); - $id = $this->Product->id; - $this->redirect(array('action'=>'view/'.$id)); - } else { - $this->Session->setFlash(__('The Product could not be saved. Please, try again.', true)); - } + $this->set('files', $this->Product->ProductAttachment->findAllByProductId($id)); + $this->set('number_of_files', $this->Product->ProductAttachment->find('count', array('conditions' => array('ProductAttachment.product_id'=>$id)))); } - $principles = $this->Product->Principle->find('list'); - $this->set(compact('principles', 'product_categories')); + function add() { + if (!empty($this->data)) { + $this->Product->create(); + + if ($this->Product->save($this->data)) { + $this->Session->setFlash(__('The Product has been saved', true)); + $id = $this->Product->id; + $this->redirect(array('action'=>'view/'.$id)); + } else { + $this->Session->setFlash(__('The Product could not be saved. Please, try again.', true)); + } + } + $principles = $this->Product->Principle->find('list'); + + $this->set(compact('principles', 'product_categories')); } function cloneProduct($id) { - if(!$id) { - $this->Session->setFlash('Invalid Product ID'); - $this->redirect(array('action'=>'index')); - } - else { - $product = $this->Product->find('first',array('conditions'=>array('Product.id'=>$id))); + if(!$id) { + $this->Session->setFlash('Invalid Product ID'); + $this->redirect(array('action'=>'index')); + } + else { + $product = $this->Product->find('first',array('conditions'=>array('Product.id'=>$id))); + } + + + + if (!empty($this->data)) { + $this->Product->create(); + + if ($this->Product->save($this->data)) { + $this->Session->setFlash(__('The Product has been saved', true)); + $id = $this->Product->id; + $this->redirect(array('action'=>'view/'.$id)); + } else { + $this->Session->setFlash(__('The Product could not be saved. Please, try again.', true)); + } + } + + $this->data['Product']['principle_id'] = $product['Product']['principle_id']; + $this->data['Product']['title'] = $product['Product']['title']; + $this->data['Product']['description'] = $product['Product']['description']; + $this->data['Product']['item_code'] = $product['Product']['item_code']; + $this->data['Product']['notes'] = $product['Product']['notes']; + $this->data['Product']['item_description'] = $product['Product']['item_description']; + + + $principles = $this->Product->Principle->find('list'); + $this->set(compact('principles', 'product_categories')); } - - - if (!empty($this->data)) { - $this->Product->create(); - - if ($this->Product->save($this->data)) { - $this->Session->setFlash(__('The Product has been saved', true)); - $id = $this->Product->id; - $this->redirect(array('action'=>'view/'.$id)); - } else { - $this->Session->setFlash(__('The Product could not be saved. Please, try again.', true)); - } - } - - $this->data['Product']['principle_id'] = $product['Product']['principle_id']; - $this->data['Product']['title'] = $product['Product']['title']; - $this->data['Product']['description'] = $product['Product']['description']; - $this->data['Product']['item_code'] = $product['Product']['item_code']; - $this->data['Product']['notes'] = $product['Product']['notes']; - $this->data['Product']['item_description'] = $product['Product']['item_description']; - - - $principles = $this->Product->Principle->find('list'); - $this->set(compact('principles', 'product_categories')); - } - - function add_costing() { - - } - - function edit($id = null) { - if (!$id && empty($this->data)) { - $this->Session->setFlash(__('Invalid Product', true)); - $this->redirect(array('action'=>'index')); - } - if (!empty($this->data)) { - if ($this->Product->save($this->data)) { - $this->Session->setFlash(__('The Product has been saved', true)); - $id = $this->Product->id; - $this->redirect(array('action'=>'view/'.$id)); - } else { - $this->Session->setFlash(__('The Product could not be saved. Please, try again.', true)); - } - } - if (empty($this->data)) { - $this->data = $this->Product->read(null, $id); - $this->set('description', $this->data['Product']['description']); - } - $principles = $this->Product->Principle->find('list'); - $this->set(compact('principles')); - } - - function delete($id = null) { - if (!$id) { - $this->Session->setFlash(__('Invalid id for Product', true)); - $this->redirect(array('action'=>'index')); - } - if ($this->Product->del($id)) { - $this->Session->setFlash(__('Product deleted', true)); - $this->redirect(array('action'=>'index')); - } - } - - - /** - * - * Outputs a select box with the Products that belong to a particular principal. Perhaps will change to an autocomplete in the future. - */ - function getPrincipleProducts() { - - - if(empty($this->data)) { - return; - } - - else { - $this->set('products', $this->Product->find('list', array('conditions' => - array('Product.principle_id'=> $this->data['LineItem']['principle_id'])))); + function add_costing() { } - } - - function getProductOptions() { - if(empty($this->data)) { - return; + function edit($id = null) { + if (!$id && empty($this->data)) { + $this->Session->setFlash(__('Invalid Product', true)); + $this->redirect(array('action'=>'index')); + } + if (!empty($this->data)) { + if ($this->Product->save($this->data)) { + $this->Session->setFlash(__('The Product has been saved', true)); + $id = $this->Product->id; + $this->redirect(array('action'=>'view/'.$id)); + } else { + $this->Session->setFlash(__('The Product could not be saved. Please, try again.', true)); + } + } + if (empty($this->data)) { + $this->data = $this->Product->read(null, $id); + $this->set('description', $this->data['Product']['description']); + } + $principles = $this->Product->Principle->find('list'); + $this->set(compact('principles')); } - else { + function delete($id = null) { + if (!$id) { + $this->Session->setFlash(__('Invalid id for Product', true)); + $this->redirect(array('action'=>'index')); + } + if ($this->Product->del($id)) { + $this->Session->setFlash(__('Product deleted', true)); + $this->redirect(array('action'=>'index')); + } + } + + + /** + * + * Outputs a select box with the Products that belong to a particular principal. Perhaps will change to an autocomplete in the future. + */ + function getPrincipleProducts() { + + + if(empty($this->data)) { + return; + } + + else { + $this->set('products', $this->Product->find('list', array('conditions' => + array('Product.principle_id'=> $this->data['LineItem']['principle_id'])))); + + } + } + + + function getProductOptions() { + if(empty($this->data)) { + return; + } + + else { + + $this->set('options', $this->Product->ProductOptionsCategory->find('all', array('conditions' => array('ProductOptionsCategory.product_id'=>$this->data['LineItem']['product_id']), 'order'=>'ProductOptionsCategory.location ASC'))); + + + } - $this->set('options', $this->Product->ProductOptionsCategory->find('all', array('conditions' => array('ProductOptionsCategory.product_id'=>$this->data['LineItem']['product_id']), 'order'=>'ProductOptionsCategory.location ASC'))); } - } + //Finish this maybe. This project has wasted years of my life. + function autocomplete() { + + $query = strtolower($_GET["term"]); + + if($query == null) { + return; + } + + App::import('Core', 'Sanitize'); + + $query = Sanitize::clean($query); + + $products = $this->Product->find('list', array( + 'conditions' => array( + 'Product.title LIKE' => '%'.$query.'%' + ), + 'fields' => array('Product.title'), + 'order' => array('Product.title ASC') + )); + + //Cakephp. You are awful. Past Karl was an idiot + + $products_json = json_encode($products); + + $this->set('products_json', $products_json); + + $this->layout = 'ajax'; + + } } ?> diff --git a/app/views/documents/get_products.ctp b/app/views/documents/get_products.ctp index ed2a01db..de138b77 100755 --- a/app/views/documents/get_products.ctp +++ b/app/views/documents/get_products.ctp @@ -1,4 +1 @@ - input('product', array('label'=>'Product', 'id'=>'productSelect', 'empty'=>'Choose Products', 'options'=>$products));?> diff --git a/app/views/elements/add_edit_line_item.ctp b/app/views/elements/add_edit_line_item.ctp index 95b2e0f8..27773cb5 100755 --- a/app/views/elements/add_edit_line_item.ctp +++ b/app/views/elements/add_edit_line_item.ctp @@ -1,6 +1,16 @@ input('Product.principle_id', array('id'=>'principleSelect', 'label'=>'Principle','empty'=>'Select Principle'));?>
+
+
+ OR search for product + + + +
*/ +?>
link('global'); echo $javascript->link('search'); echo $javascript->link('jquery.jeditable.mini'); echo $javascript->link('jquery.validate'); -echo $javascript->link('select2'); echo $scripts_for_layout; ?> diff --git a/app/webroot/js/document_add_edit.js b/app/webroot/js/document_add_edit.js index 7b30ee79..a63f84ea 100755 --- a/app/webroot/js/document_add_edit.js +++ b/app/webroot/js/document_add_edit.js @@ -294,7 +294,11 @@ $(function() { $("#productSelect").live('change',function() { var productID = getSelectedID('#productSelect'); + getProductDetails(productID); + + }); + function getProductDetails(productID) { $.get('/documents/getProductDetails/'+productID, function(data) { $("#lineItemDetails").show(); @@ -319,8 +323,18 @@ $(function() { }, "json"); - }); + } + //Autocomplete product title for adding lineItem + $( "#productAutocomplete" ).live('focus', function() { + $(this).autocomplete({ + source: "/products/autocomplete", + minLength: 2, + select: function( event, ui ) { + console.log(ui); + } + }); + }); // Initialize the editor. // Callback function can be passed and executed after full instance creation.