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 deleteAction() { // Если к нам идёт Post запрос if ($this->getRequest()->isPost()) { // Принимаем значение $del = $this->getRequest()->getPost('del'); // Если пользователь подтвердил своё желание удалить запись if ($del == 'Да') { // Принимаем id записи, которую хотим удалить $id = $this->getRequest()->getPost('id'); // Создаём объект модели $warehouse = new Application_Model_DbTable_Warehouse(); // Вызываем метод модели deleteMovie для удаления записи $warehouse->deleteWarehouse($id); } // Используем библиотечный helper для редиректа на action = index $this->_helper->redirector('index'); } else { // Если запрос не Post, выводим сообщение для подтверждения // Получаем id записи, которую хотим удалить $id = $this->_getParam('id'); // Создаём объект модели $warehouse = new Application_Model_DbTable_Warehouse(); // Достаём запись и передаём в view $this->view->warehouse = $warehouse->getWarehouse($id); } }
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); }