151 lines
5.6 KiB
PHP
Executable file
151 lines
5.6 KiB
PHP
Executable file
<?php
|
|
class CustomersController extends AppController {
|
|
|
|
var $name = 'Customers';
|
|
var $helpers = array('Html', 'Form', 'Time', 'Ajax');
|
|
var $components = array('RequestHandler');
|
|
|
|
|
|
var $paginate = array(
|
|
'Customer' => array('order' => array('Customer.name' => 'asc'),
|
|
'limit' => 200
|
|
),
|
|
'Enquiry' => array('order' => array('Enquiry.id' => 'desc'))
|
|
);
|
|
|
|
function index() {
|
|
$this->Customer->recursive = 0;
|
|
$this->set('customers', $this->paginate());
|
|
$this->set('customer_categories', $this->Customer->CustomerCategory->find('all'));
|
|
/* Show only customers from a particular category name */
|
|
if(isset($this->params['named']['showonly'])) {
|
|
$this->set('customers', $this->paginate('Customer', array('Customer.customer_category_id' => $this->params['named']['showonly'])));
|
|
}
|
|
|
|
}
|
|
|
|
function view($id = null) {
|
|
if (!$id) {
|
|
$this->Session->setFlash(__('Invalid Customer.', true));
|
|
$this->redirect(array('action'=>'index'));
|
|
}
|
|
$this->set('customer', $this->Customer->read(null, $id));
|
|
$this->set('addresses', $this->Customer->Address->findAllByCustomerId($id));
|
|
$this->set('enquiries', $this->paginate('Enquiry', array('Enquiry.customer_id' => $id)));
|
|
$this->set('contacts', $this->Customer->Contact->find('all', array('conditions' => array('customer_id' => $id), 'order' => 'Contact.last_name ASC')));
|
|
$statuses = $this->Customer->Enquiry->Status->find('all');
|
|
$status_list = array();
|
|
foreach ($statuses as $status) {
|
|
$status_list[] = array($status['Status']['id'], $status['Status']['name']);
|
|
}
|
|
$this->set('status_list', $status_list);
|
|
$this->set('parent_industry_list', $this->Customer->Industry->find('list', array('conditions' => array('parent_id' => null))));
|
|
}
|
|
|
|
function add() {
|
|
if (!empty($this->data)) {
|
|
|
|
/* Remove all whitespace and non-digit characters from the user input */
|
|
$this->data['Customer']['abn'] = preg_replace("/\s*\D*/", "", $this->data['Customer']['abn']);
|
|
|
|
|
|
if($this->Customer->saveAll($this->data, array('validate'=>'first')) ) {
|
|
$newcustomerid = $this->Customer->id;
|
|
$this->Session->setFlash(__('The Customer has been saved', true));
|
|
$this->redirect(array('action'=>'view', 'id'=>$newcustomerid));
|
|
}
|
|
else {
|
|
$this->Session->setFlash(__('The Customer could not be saved. Please try again.', true));
|
|
}
|
|
}
|
|
$this->set('customer_categories', $this->Customer->CustomerCategory->find('list'));
|
|
$this->set('states', $this->Customer->Address->State->find('list'));
|
|
$this->set('countries', $this->Customer->Address->Country->find('list'));
|
|
|
|
}
|
|
|
|
|
|
function edit($id = null) {
|
|
|
|
if (!$id && empty($this->data)) {
|
|
$this->Session->setFlash(__('Invalid Customer', true));
|
|
$this->redirect(array('action'=>'index'));
|
|
}
|
|
|
|
if (!empty($this->data)) {
|
|
/* Remove all whitespace and non-digit characters from the user input */
|
|
$this->data['Customer']['abn'] = preg_replace("/\s*\D*/", "", $this->data['Customer']['abn']);
|
|
if ($this->Customer->saveAll($this->data)) {
|
|
$this->Session->setFlash(__('The Customer has been saved', true));
|
|
$id = $this->Customer->id;
|
|
$this->redirect(array('action'=>'view/'.$id));
|
|
} else {
|
|
$this->Session->setFlash(__('The Customer could not be saved. Please, try again.', true));
|
|
|
|
$this->set('customer_categories', $this->Customer->CustomerCategory->find('list'));
|
|
$this->set('industries', $this->Customer->Industry->find('list', array('fields'=>array('Industry.id', 'Industry.name', 'ParentIndustry.name'),'recursive' => 0,
|
|
'order'=>'ParentIndustry.name ASC, Industry.name ASC')));
|
|
}
|
|
}
|
|
if (empty($this->data)) {
|
|
$this->data = $this->Customer->read(null, $id);
|
|
|
|
$this->set('customer_categories', $this->Customer->CustomerCategory->find('list'));
|
|
$this->set('industries', $this->Customer->Industry->find('list', array('fields'=>array('Industry.id', 'Industry.name', 'ParentIndustry.name'),'recursive' => 0,
|
|
'order'=>'ParentIndustry.name ASC, Industry.name ASC')));
|
|
}
|
|
|
|
}
|
|
|
|
/* Autocomplete the customer name - Used in: add.ctp */
|
|
function completeCustomer() {
|
|
|
|
$this->set('customers', $this->Customer->find('all', array(
|
|
'conditions' => array(
|
|
'Customer.name LIKE' => '%'.$this->data['Customer']['name'].'%'
|
|
),'fields' => array('Customer.name')
|
|
)));
|
|
$this->layout = 'ajax';
|
|
|
|
}
|
|
|
|
function find() {
|
|
if(!empty($this->data)) {
|
|
$customer = $this->Customer->findByName($this->data['Customer']['name']);
|
|
if(!$customer) {
|
|
$this->Session->setFlash(__('Could not find the Requested Customer. Please select one from the drop down box as you type.', true));
|
|
}
|
|
else {
|
|
$this->redirect(array('action'=>'view/'.$customer['Customer']['id']));
|
|
}
|
|
}
|
|
}
|
|
|
|
function tagindustries($id = null) {
|
|
if (!$id && empty($this->data)) {
|
|
$this->Session->setFlash(__('Invalid Customer', true));
|
|
$this->redirect(array('action'=>'index'));
|
|
}
|
|
if(!empty($this->data)) {
|
|
if($this->Customer->saveAll($this->data)) {
|
|
$this->Session->setFlash(__('The Industry Tags have been Saved to the Customer', true));
|
|
$this->redirect(array('action'=>'view/'.$this->data['Customer']['id']));
|
|
}
|
|
else {
|
|
$this->Session->setFlash(__('Something went wrong saving the Tags. Call for help!', true));
|
|
$this->redirect(array('action'=>'index'));
|
|
}
|
|
}
|
|
else {
|
|
$this->set('industries', $this->Customer->Industry->find('list', array('fields'=>array('Industry.id', 'Industry.name', 'ParentIndustry.name'),'recursive' => 0,
|
|
'order'=>'ParentIndustry.name ASC, Industry.name ASC')));
|
|
$this->data = $this->Customer->read(null, $id);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
?>
|