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");
 }
Exemple #2
0
 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 invoiceAction()
 {
     // Подключаем класс для работы с excel
     require_once 'PHPExcel.php';
     // Подключаем класс для вывода данных в формате excel
     require_once 'PHPExcel/Writer/Excel5.php';
     global $settings;
     //получаем все данные по ремонту из базы данных
     $service = new Application_Model_DbTable_Service();
     $id = $this->getRequest()->getParam('id');
     $num = $this->getRequest()->getParam('num');
     //массив данных о ремонте
     $data = $service->getService($id);
     //заполняем таблицу данными
     // Создаем объект класса PHPExcel
     $xls = new PHPExcel();
     // Устанавливаем индекс активного листа
     $xls->setActiveSheetIndex(0);
     // Получаем активный лист
     $sheet = $xls->getActiveSheet();
     // Подписываем лист
     $sheet->setTitle('Service CoffeeService');
     // Записываем данные в ячейку
     $date = date('d-m-Y');
     //объединение ячеек
     $sheet->mergeCells('A1:F1')->setCellValue("A1", "Накладная №{$num} от {$date} года");
     // Выравнивание текста
     $sheet->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     //задаем размер и тип шрифта
     $sheet->getStyle('A1')->getFont()->setName('Arial')->setSize(14);
     $sheet->getStyle('B3')->getFont()->setName('Arial')->setSize(12);
     $sheet->getStyle('B4')->getFont()->setName('Arial')->setSize(12);
     $sheet->getStyle('B6')->getFont()->setName('Arial')->setSize(11);
     //объединение ячеек
     $sheet->mergeCells('B2:F2');
     $sheet->mergeCells('B3:F3')->setCellValue("B3", $settings['excel']['name']);
     $sheet->mergeCells('B4:F4')->setCellValue("B4", "Клиент: {$data['client']}");
     $sheet->mergeCells('B6:F6')->setCellValue("B6", "Кофеаппарат: {$data['name']}   Серийный номер: {$data['number']}");
     //задаем ширину ячейки
     $sheet->getColumnDimension('A')->setWidth(5);
     $sheet->getColumnDimension('B')->setWidth(48);
     //выравнимание текста в ячейке
     $sheet->getStyle('A')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     $sheet->getStyle('B8')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     $sheet->getStyle('C8')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     $sheet->getStyle('D8')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     $sheet->getStyle('E8')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     $sheet->getStyle('F8')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
     //заполняем названия столбцов таблицы
     $sheet->setCellValue("A8", '№');
     $sheet->setCellValue("B8", 'Услуга/запчасть');
     $sheet->setCellValue("C8", 'К-во');
     $sheet->setCellValue("D8", 'Ед.');
     $sheet->setCellValue("E8", 'Цена');
     $sheet->setCellValue("F8", 'Сумма');
     //распаковываем данные
     $spares = unserialize($data['serialize_data']);
     $prices = unserialize($data['serialize_price']);
     $warehouse = new Application_Model_DbTable_Warehouse();
     $prices_base = new Application_Model_DbTable_Prices();
     $i = 9;
     foreach ($spares as $id => $value) {
         $number = $i - 8;
         $spare_data = $warehouse->getWarehouse($id);
         $sheet->setCellValue("A{$i}", "{$number}");
         $sheet->setCellValue("B{$i}", "{$spare_data['name']}");
         $sheet->setCellValue("C{$i}", "{$value}.000");
         $sheet->setCellValue("D{$i}", "шт.");
         $sheet->setCellValue("E{$i}", "{$spare_data['price']}");
         $sum = $spare_data['price'] * $value;
         $sheet->setCellValue("F{$i}", "{$sum}");
         $final += $sum;
         $i++;
     }
     foreach ($prices as $id => $value) {
         $number = $i - 8;
         $prices_data = $prices_base->getPrice($id);
         $sheet->setCellValue("A{$i}", "{$number}");
         $sheet->setCellValue("B{$i}", "{$prices_data['name']}");
         $sheet->setCellValue("C{$i}", "1.000");
         $sheet->setCellValue("D{$i}", "ед.");
         $sheet->setCellValue("E{$i}", "{$prices_data['price']}");
         $sheet->setCellValue("F{$i}", "{$prices_data['price']}");
         $final += $prices_data[price];
         $i++;
     }
     $i += 2;
     $num = $i - 11;
     $sheet->setCellValue("F{$i}", "Всего {$final} грн");
     $sheet->setCellValue("A{$i}", "Всего наименований {$num}, на сумму {$final} грн");
     $sheet->getStyle("F{$i}")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT);
     $sheet->getStyle("A{$i}")->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);
     // массив стилей
     $style_wrap = array('borders' => array('outline' => array('style' => PHPExcel_Style_Border::BORDER_THICK, 'color' => array('rgb' => '#000000')), 'allborders' => array('style' => PHPExcel_Style_Border::BORDER_THIN, 'color' => array('rgb' => '#000000'))));
     $sheet->getStyle('A8:F' . ($i - 3))->applyFromArray($style_wrap);
     $i += 3;
     $sheet->mergeCells("B{$i}:F{$i}")->setCellValue("B{$i}", 'Отпустил ___________________________      Получил __________________________________');
     // Выводим содержимое файла
     $objWriter = new PHPExcel_Writer_Excel5($xls);
     $objWriter->save('invoice.xls');
     // открываем файл в бинарном режиме
     header("Location: http://{$settings['excel']['site']}/invoice.xls");
 }
 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']);
     }
 }