public function toexcelAction() { global $settings; // Подключаем класс для работы с excel require_once 'PHPExcel.php'; // Подключаем класс для вывода данных в формате excel require_once 'PHPExcel/Writer/Excel5.php'; // Создаем объект класса PHPExcel $xls = new PHPExcel(); // Устанавливаем индекс активного листа $xls->setActiveSheetIndex(0); // Получаем активный лист $sheet = $xls->getActiveSheet(); // Подписываем лист $sheet->setTitle('Warehouse CoffeeService'); $sheet->setCellValue("A1", '№'); $sheet->setCellValue("B1", 'Серийный номер'); $sheet->setCellValue("C1", 'Название'); $sheet->setCellValue("D1", 'Тип'); $sheet->setCellValue("E1", 'Остаток'); $sheet->setCellValue("F1", 'Дата'); //меняем цвет заголовка $sheet->getStyle('A1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('A1')->getFill()->getStartColor()->setRGB('EEEEEE'); $sheet->getStyle('B1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('B1')->getFill()->getStartColor()->setRGB('EEEEEE'); $sheet->getStyle('C1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('C1')->getFill()->getStartColor()->setRGB('EEEEEE'); $sheet->getStyle('D1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('D1')->getFill()->getStartColor()->setRGB('EEEEEE'); $sheet->getStyle('E1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('E1')->getFill()->getStartColor()->setRGB('EEEEEE'); $sheet->getStyle('F1')->getFill()->setFillType(PHPExcel_Style_Fill::FILL_SOLID); $sheet->getStyle('F1')->getFill()->getStartColor()->setRGB('EEEEEE'); $sheet->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT); // автоматическая ширина ячейки $sheet->getColumnDimension('A')->setAutoSize(true); $sheet->getColumnDimension('B')->setAutoSize(true); $sheet->getColumnDimension('C')->setAutoSize(true); $sheet->getColumnDimension('D')->setAutoSize(true); $sheet->getColumnDimension('E')->setAutoSize(true); $sheet->getColumnDimension('F')->setAutoSize(true); // формат ячейки текстовый $sheet->getStyle('A')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); $sheet->getStyle('B')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); $sheet->getStyle('C')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); $sheet->getStyle('D')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); $sheet->getStyle('E')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); $sheet->getStyle('F')->getNumberFormat()->setFormatCode(PHPExcel_Style_NumberFormat::FORMAT_TEXT); $warehouse = new Application_Model_DbTable_Warehouse(); $data = $warehouse->fetchAll()->toArray(); $i = 2; foreach ($data as $rows) { $number = $i - 1; $sheet->setCellValue("A{$i}", "{$number}"); $sheet->setCellValue("B{$i}", "{$rows['serial']}"); $sheet->setCellValue("C{$i}", "{$rows['name']}"); $sheet->setCellValue("D{$i}", "{$rows['type']}"); $sheet->setCellValue("E{$i}", "{$rows['remain']}"); $sheet->setCellValue("F{$i}", "{$rows['lastadding']}"); $i++; } // Выводим содержимое файла $objWriter = new PHPExcel_Writer_Excel5($xls); $objWriter->save('warehouse.xls'); // открываем файл в бинарном режиме header("Location: http://{$settings['excel']['site']}/warehouse.xls"); }
public function editRepair($id, $number, $device) { // вносим изменения в склад запчастей $this->id = $id; $this->number = $number; if ($this->spares != '') { $this->spares .= ' '; } if ($this->check_data) { $warehouse = new Application_Model_DbTable_Warehouse(); $warehouse_data = $warehouse->fetchAll(); $warehistory = new Application_Model_DbTable_Warehistory(); foreach ($this->check_data as $id => $value) { $spare_data = $warehouse->getWarehouse($id); $this->spares .= "|| {$spare_data['serial']}-{$spare_data['name']}-{$value}шт "; $row = $warehouse->getWarehouse($id); foreach ($warehouse_data as $rows) { if ($rows['id'] == $id) { $this->remain = $rows['remain']; } } $this->remain -= $value; $this->serial = $row['serial']; $this->name = $row['name']; $this->type = $row['type']; $this->price = 'unload'; $this->path = $row['path']; //имя картинки для запчасти // Вызываем метод модели addMovie для вставки новой записи $warehouse->editWarehouse($id, $this->serial, $this->name, $this->type, $this->remain, $this->price, $this->path); $warehistory->addWarehistory($this->serial, $this->name, "редактирование ремонта -{$this->number}-{$device['name']}", $row['remain'], $value, $this->remain); } } //редактируем запись о ремонте $editRepaire = new Application_Model_DbTable_Repairs(); $editRepaire->editRepaire($this); //сохраняем статус ремонта $devices = new Application_Model_DbTable_Devices(); $devices->editDeviceStatus($this); //сохраняем историю $history = new Application_Model_DbTable_History(); $history->addRepairHistory($this); }
public function editAction() { $id = $this->getRequest()->getParam('id'); $service = new Application_Model_DbTable_Service(); $service_data = $service->getService($id); //вырезаем лишнюю информацию о запчастях $service_data['spares'] = substr($service_data['spares'], 0, strpos($service_data['spares'], '||')); //вырезаем лишнюю информацию о услугах $service_data['work'] = substr($service_data['work'], 0, strpos($service_data['work'], '||')); //загружаем текущее состояние склада запчастей $warehouse = new Application_Model_DbTable_Warehouse(); $warehouse_data = $warehouse->fetchAll(); //добавляем к текущему состоянию значения которые редактируются if ($service_data['serialize_data'] != 'N;') { //проверяем не является ли запись пустой foreach (unserialize($service_data['serialize_data']) as $spares_id => $spares_value) { foreach ($warehouse_data as $rows) { if ($rows['id'] == $spares_id) { $rows['remain'] += $spares_value; //создаем массив нажатых галочек $checked["{$spares_id}"] = 'checked'; } } } } //загружаем список услуг $prices_obj = new Application_Model_DbTable_Prices(); $prices_data = $prices_obj->fetchAll(); // Если к нам идёт Post запрос if ($this->getRequest()->isPost()) { // Принимаем данные $check = $this->getRequest()->getPost('check'); $data = $this->getRequest()->getPost('data'); $prices = $this->getRequest()->getPost('prices'); //создаем массив данных из пунктов где нажаты галочки //если есть нажатые галочки с запчастями, формируем массив данных "id-количество" if ($check) { foreach ($check as $check_id => $value) { $check_data[$value] = $data[$value]; //создаем массив данных //для передачи во view $checked["{$value}"] = "checked"; //запись в массив нажатых галочек if (!preg_match("/^[0-9]{0,10}\$/i", $check_data[$value])) { //проверка регулярных выражений $error["{$value}"] = 'error'; //записываем несовпадение правилам } //проверка на количество запчастей в базе foreach ($warehouse_data as $rows) { if ($rows['id'] == $value) { $spare_count = $rows['remain']; //записываем количество запчастей в момент редактирования } } if ($spare_count - $check_data["{$value}"] < 0) { //делаем проверку $error["{$value}"] = 'error'; //записываем несовпадение правилам } } } //создаем массив данных из пунктов где нажаты галочки //если есть нажатые галочки с запчастями, формируем массив данных "id-количество" if ($prices) { foreach ($prices as $id => $price) { $checked_price["{$id}"] = "checked"; //запись в массив нажатых галочек if (!preg_match("/^[0-9]{0,10}\$/i", $prices[$id])) { //проверка регулярных выражений $error_price["{$id}"] = 'error'; //записываем несовпадение правилам } } } //принимаем данные с input $client = $this->getRequest()->getPost('client'); $number = $this->getRequest()->getPost('number'); $claim = $this->getRequest()->getPost('claim'); $diagnos = $this->getRequest()->getPost('diagnos'); $work = $this->getRequest()->getPost('work'); $status = $this->getRequest()->getPost('status'); $name = $this->getRequest()->getPost('name'); $spares = $this->getRequest()->getPost('spares'); $comments = $this->getRequest()->getPost('comments'); $counter = $this->getRequest()->getPost('counter'); //проверка регулярных выражений if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $client)) { $error['client'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $number)) { $error['number'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $claim)) { $error['claim'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $status)) { $error['status'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $name)) { $error['name'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $diagnos)) { $error['diagnos'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $spares)) { $error['spares'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $work)) { $error['work'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{3,300}\$/i", $comments)) { $error['comments'] = 'error'; } if (!preg_match("/^[А-Яа-яA-Za-z0-9 \\.\\,\\-\\ \\!\\;\\:]{0,300}\$/i", $counter)) { $error['counter'] = 'error'; } //если нет ошибкок if (!$error) { //сохраняем данные для последующего редактирования (если нужно) $serialize_price = serialize($checked_price); $serialize_data = serialize($check_data); //записываем выполненные работы и цены на них if ($prices) { foreach ($prices as $id => $value) { //получаем из базы название услуги по "id" $description = $prices_obj->getPrice($id); //составляем текстовую строку со всеми выполнеными работами $work .= " || {$description['name']} - {$value} грн"; } } $warehistory = new Application_Model_DbTable_Warehistory(); //записываем использованые запчасти и цены на них if ($check_data) { foreach ($check_data as $idw => $value) { //получаем из базы название услуги по "id" $spare_data = $warehouse->getWarehouse($idw); //составляем текстовую строку со всеми выполнеными работами $spares .= "|| {$spare_data['serial']}-{$spare_data['name']}-{$value}шт "; //вносим изменения по расходу запчастей в склад foreach ($warehouse_data as $rows) { if ($rows['id'] == $idw) { $remain = $rows['remain']; } } $wh_remain = $remain - $value; $wh_serial = $spare_data['serial']; $wh_name = $spare_data['name']; $wh_type = $spare_data['type']; $wh_path = $spare_data['path']; //имя картинки для запчасти // Вызываем метод модели для редактрования записи $warehouse->editWarehouse($idw, $wh_serial, $wh_name, $wh_type, $wh_remain, 'unload', $wh_path); //формируем строку для истории расхода запчастей по конкретной запчасти $warehistory->addWarehistory($wh_serial, $wh_name, "{$number}-{$name} || платный ремонт редактирование", $spare_data['remain'], $value, $wh_remain); } } //сохраняем данные в базу $service = new Application_Model_DbTable_Service(); $id = $this->getRequest()->getParam('id'); $service->editService($id, $client, $number, $claim, $diagnos, $spares, $work, $status, $name, $comments, $counter, $serialize_price, $serialize_data); $this->_helper->redirector->gotoUrl("service/index"); //если есть ошибки } else { $this->view->client = $client; $this->view->number = $number; $this->view->claim = $claim; $this->view->diagnos = $diagnos; $this->view->status = $status; $this->view->name = $name; $this->view->spares = $spares; $this->view->work = $work; $this->view->comments = $comments; $this->view->counter = $counter; $this->view->warehouse = $warehouse_data; $this->view->prices = $prices_data; $this->view->error_message = 'error_message'; $this->view->error = $error; $this->view->checked_price = $checked_price; $this->view->check_data = $check_data; $this->view->checked = $checked; } // // //если запроса ПОСТ нету, заполняем поля редактирования из базы } else { $this->view->client = $service_data['client']; $this->view->number = $service_data['number']; $this->view->claim = $service_data['claim']; $this->view->diagnos = $service_data['diagnos']; $this->view->status = $service_data['status']; $this->view->name = $service_data['name']; $this->view->spares = $service_data['spares']; $this->view->work = $service_data['work']; $this->view->comments = $service_data['comments']; $this->view->counter = $service_data['counter']; $this->view->warehouse = $warehouse_data; $this->view->prices = $prices_data; $this->view->checked_price = unserialize($service_data['serialize_price']); $this->view->check_data = unserialize($service_data['serialize_data']); $this->view->checked = $checked; } }
public function editAction() { $number = $this->getRequest()->getParam('number'); $this->view->number = $number; //принимаем номер аппарата $id = $this->getRequest()->getParam('id'); $devices = new Application_Model_DbTable_Devices(); $device = $devices->getName($number); $this->view->name = $device['name']; //название аппарата $status = new Application_Model_DbTable_Setup(); $status->setTableName('status'); $status_values = $status->getValues(); $this->view->status = $status_values; //доступные статусы аппарата $this->view->status_ch = $device['status']; //текущий статус аппарата $repaire = new Application_Model_DbTable_Repairs(); $repaire_data = $repaire->getRepaire($id); //загружаем данные о ремонте //вырезаем лишнюю информацию о ремонте $repaire_data['spares'] = substr($repaire_data['spares'], 0, strpos($repaire_data['spares'], '||')); //загружаем текущее состояние склада запчастей $warehouse = new Application_Model_DbTable_Warehouse(); $warehouse_data = $warehouse->fetchAll(); //добавляем к текущему состоянию значения которые редактируются if ($repaire_data['serialize_data'] != 'N;') { //проверяем не является ли запись пустой foreach (unserialize($repaire_data['serialize_data']) as $repaire_id => $repaire_value) { foreach ($warehouse_data as $rows) { if ($rows['id'] == $repaire_id) { $rows['remain'] += $repaire_value; } } } } $this->view->warehouse = $warehouse_data; // Если к нам идёт Post запрос if ($this->getRequest()->isPost()) { // Принимаем его $formData = $this->getRequest()->getPost(); //принимаем данные $repaire = new Application_Model_Repaire($formData); //валидация данных $error = $repaire->checkForm(); //если нет ошибкок if (!$error) { $repaire->editRepair($id, $number, $device); $this->_helper->redirector->gotoUrl("repairs/index/number/{$number}"); //если есть ошибки } else { $this->view->error_message = 'error_message'; $this->view->claim = $repaire->claim; $this->view->diagnos = $repaire->diagnos; $this->view->spares = $repaire->spares; $this->view->work = $repaire->work; $this->view->comments = $repaire->comments; $this->view->counter = $repaire->counter; $this->view->check_data = $repaire->check_data; $this->view->checked = $repaire->checked; $this->view->status = $status_values; $this->view->status_ch = $repaire->status; $this->view->error = $error; } //если запроса ПОСТ нету, заполняем поля редактирования из базы } else { $this->view->claim = $repaire_data['claim']; $this->view->diagnos = $repaire_data['diagnos']; $this->view->spares = $repaire_data['spares']; $this->view->work = $repaire_data['work']; $this->view->comments = $repaire_data['comments']; $this->view->counter = $repaire_data['counter']; $this->view->check_data = unserialize($repaire_data['serialize_data']); $this->view->checked = unserialize($repaire_data['serialize_checked']); } }