diff --git a/app/Modules/Invoice/Actions/GenerateInvoiceExcell.php b/app/Modules/Invoice/Actions/GenerateInvoiceExcell.php index 5d67a7c..efcd216 100644 --- a/app/Modules/Invoice/Actions/GenerateInvoiceExcell.php +++ b/app/Modules/Invoice/Actions/GenerateInvoiceExcell.php @@ -123,126 +123,7 @@ class GenerateInvoiceExcell $this->worksheet->getCell($cell)->setValue($value); } - $items = collect($this->data->items); - - $total = 0; - $itemCellNumber = 25; - $numberFormat = '#,##0.00'; - $items->each(function (InvoiceItem $item, int $index) use (&$itemCellNumber, &$total, $numberFormat) { - $this->worksheet->getCell('A'.$itemCellNumber)->setValue($index + 1); - $this->worksheet->getCell('B'.$itemCellNumber)->setValue($item->name); - $this->worksheet->getCell('C'.$itemCellNumber)->setValue($item->unit); - $this->worksheet->getCell('D'.$itemCellNumber)->setValue($item->quantity); - $this->worksheet->getCell('E'.$itemCellNumber)->setValue($item->unit_price); - $this->worksheet->getCell('F'.$itemCellNumber)->setValue($item->vat); - $this->worksheet->getCell('G'.$itemCellNumber)->setValue($item->vat_excluded); - $this->worksheet->getCell('H'.$itemCellNumber)->setValue($item->vat_percentage); - $this->worksheet->getCell('I'.$itemCellNumber)->setValue($item->vat_tmt); - - $total += ($item->quantity * $item->unit_price); - $this->worksheet->setCellValue( - 'J'.$itemCellNumber, - "=D{$itemCellNumber}*E{$itemCellNumber}" - ); - - // Set font-family, alingment, and borders for all of them... - $this->worksheet->getStyle('A'.$itemCellNumber.':J'.$itemCellNumber)->applyFromArray($this->defaultCellStyles()); - - // Invoice Name... - $this->worksheet->getCell('B'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleCenter()); - - // Bold cells... - $this->worksheet->getCell('D'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); - $this->worksheet->getCell('E'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); - $this->worksheet->getCell('J'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); - - // Invoice number format... - $this->worksheet->getStyle('E'.$itemCellNumber)->getNumberFormat()->setFormatCode($numberFormat); - $this->worksheet->getStyle('J'.$itemCellNumber)->getNumberFormat()->setFormatCode($numberFormat); - - $itemCellNumber++; - }); - - // Set default styles... - $this->worksheet->getStyle('A'.$itemCellNumber.':J'.$itemCellNumber)->applyFromArray($this->defaultCellStyles()); - - $this->worksheet->getCell('B'.$itemCellNumber)->setValue('Jemi tölenmeli:')->getStyle()->applyFromArray([ - 'font' => ['size' => 11], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_RIGHT], - ]); - - $lastItemCellNumber = $itemCellNumber - 1; - $this->worksheet->getCell('J'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); - $this->worksheet->getStyle('J'.$itemCellNumber)->getNumberFormat()->setFormatCode($numberFormat); - $this->worksheet->setCellValue('J'.$itemCellNumber, "=SUM(J25:J{$lastItemCellNumber})"); - - // Next cell.. - $itemCellNumber++; - - $this->worksheet->setCellValue('A'.$itemCellNumber, 'Harydyň (işleriň, hyzmatlaryň) jemi bahasy'); - $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['size' => 9, 'name' => 'Times New Roman']]); - - $this->worksheet->getStyle('C'.$itemCellNumber)->applyFromArray(['font' => ['bold' => true, 'size' => 11, 'name' => 'Times New Roman']]); - $this->worksheet->setCellValue('C'.$itemCellNumber, Str::ucfirst(TurkmenNumberFormatter::format(floatval($total)))); - $this->worksheet->mergeCells('C'.$itemCellNumber.':J'.$itemCellNumber); - - // Leave empty one - $itemCellNumber++; - $itemCellNumber++; - - $this->worksheet->setCellValue('B'.$itemCellNumber, $this->data->seller_firm_name); - $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['borders' => ['bottom' => ['borderStyle' => Border::BORDER_THIN]]]); - $this->worksheet->getStyle('B'.$itemCellNumber)->applyFromArray([ - 'font' => ['bold' => true, 'size' => 11, 'name' => 'Times New Roman'], - 'borders' => [ - 'bottom' => [ - 'borderStyle' => Border::BORDER_THIN, - ], - ], - ]); - - $this->worksheet->getStyle('G'.$itemCellNumber.':I'.$itemCellNumber)->applyFromArray(['borders' => ['bottom' => ['borderStyle' => Border::BORDER_THIN]]]); - $itemCellNumber++; - - $this->worksheet->setCellValue('A'.$itemCellNumber, '(görnüşli tarapyň ýolbaşçysynyň ýa-da hususy telekeçiniň F.A.A.A.)'); - $this->worksheet->setCellValue('H'.$itemCellNumber, '(goly)'); - - $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); - $this->worksheet->getStyle('H'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); - - $itemCellNumber++; - $itemCellNumber++; - $itemCellNumber++; - $itemCellNumber++; - - $this->worksheet->setCellValue( - 'A'.$itemCellNumber, - sprintf( - '__________%s____________________________manat_______0________ teňňe möçberde iberilen haryt doly alyndy.', - Str::before(Str::ucfirst(moneyFormatInTurkmenLetter(floatval($total))), ' manat') - ) - ); - - $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); - - $itemCellNumber++; - $itemCellNumber++; - - $this->worksheet->setCellValue( - 'A'.$itemCellNumber, - '_______________________________________________________ ___________________ ' - ); - $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); - - $itemCellNumber++; - - $this->worksheet->setCellValue( - 'A'.$itemCellNumber, - ' Satyn alyjynyň ýa-da kärhananyň ynam bildiren tarapynyň F.A.A A (goly)' - ); - $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray([ - 'font' => ['bold' => false, 'size' => 8, 'name' => 'Times New Roman'], - 'alignment' => ['vertical' => Alignment::VERTICAL_TOP], - ]); + $this->fillItems(); } /** @@ -418,4 +299,131 @@ class GenerateInvoiceExcell ], ]; } + + /** + * Fill items + */ + public function fillItems(): void + { + $items = collect($this->data->items); + + $total = 0; + $itemCellNumber = 25; + $numberFormat = '#,##0.00'; + $items->each(function (InvoiceItem $item, int $index) use (&$itemCellNumber, &$total, $numberFormat) { + $this->worksheet->getCell('A'.$itemCellNumber)->setValue($index + 1); + $this->worksheet->getCell('B'.$itemCellNumber)->setValue($item->name); + $this->worksheet->getCell('C'.$itemCellNumber)->setValue($item->unit); + $this->worksheet->getCell('D'.$itemCellNumber)->setValue($item->quantity); + $this->worksheet->getCell('E'.$itemCellNumber)->setValue($item->unit_price); + $this->worksheet->getCell('F'.$itemCellNumber)->setValue($item->vat); + $this->worksheet->getCell('G'.$itemCellNumber)->setValue($item->vat_excluded); + $this->worksheet->getCell('H'.$itemCellNumber)->setValue($item->vat_percentage); + $this->worksheet->getCell('I'.$itemCellNumber)->setValue($item->vat_tmt); + + $total += ($item->quantity * $item->unit_price); + $this->worksheet->setCellValue( + 'J'.$itemCellNumber, + "=D{$itemCellNumber}*E{$itemCellNumber}" + ); + + // Set font-family, alingment, and borders for all of them... + $this->worksheet->getStyle('A'.$itemCellNumber.':J'.$itemCellNumber)->applyFromArray($this->defaultCellStyles()); + + // Invoice Name... + $this->worksheet->getCell('B'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleCenter()); + + // Bold cells... + $this->worksheet->getCell('D'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); + $this->worksheet->getCell('E'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); + $this->worksheet->getCell('J'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); + + // Invoice number format... + $this->worksheet->getStyle('E'.$itemCellNumber)->getNumberFormat()->setFormatCode($numberFormat); + $this->worksheet->getStyle('J'.$itemCellNumber)->getNumberFormat()->setFormatCode($numberFormat); + + $itemCellNumber++; + }); + + // Set default styles... + $this->worksheet->getStyle('A'.$itemCellNumber.':J'.$itemCellNumber)->applyFromArray($this->defaultCellStyles()); + + $this->worksheet->getCell('B'.$itemCellNumber)->setValue('Jemi tölenmeli:')->getStyle()->applyFromArray([ + 'font' => ['size' => 11], 'alignment' => ['horizontal' => Alignment::HORIZONTAL_RIGHT], + ]); + + $lastItemCellNumber = $itemCellNumber - 1; + $this->worksheet->getCell('J'.$itemCellNumber)->getStyle()->applyFromArray($this->cellStyleBold()); + $this->worksheet->getStyle('J'.$itemCellNumber)->getNumberFormat()->setFormatCode($numberFormat); + $this->worksheet->setCellValue('J'.$itemCellNumber, "=SUM(J25:J{$lastItemCellNumber})"); + + // Next cell.. + $itemCellNumber++; + + $this->worksheet->setCellValue('A'.$itemCellNumber, 'Harydyň (işleriň, hyzmatlaryň) jemi bahasy'); + $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['size' => 9, 'name' => 'Times New Roman']]); + + $this->worksheet->getStyle('C'.$itemCellNumber)->applyFromArray(['font' => ['bold' => true, 'size' => 11, 'name' => 'Times New Roman']]); + $this->worksheet->setCellValue('C'.$itemCellNumber, Str::ucfirst(TurkmenNumberFormatter::format(floatval($total)))); + $this->worksheet->mergeCells('C'.$itemCellNumber.':J'.$itemCellNumber); + + // Leave empty one + $itemCellNumber++; + $itemCellNumber++; + + $this->worksheet->setCellValue('B'.$itemCellNumber, $this->data->seller_firm_name); + $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['borders' => ['bottom' => ['borderStyle' => Border::BORDER_THIN]]]); + $this->worksheet->getStyle('B'.$itemCellNumber)->applyFromArray([ + 'font' => ['bold' => true, 'size' => 11, 'name' => 'Times New Roman'], + 'borders' => [ + 'bottom' => [ + 'borderStyle' => Border::BORDER_THIN, + ], + ], + ]); + + $this->worksheet->getStyle('G'.$itemCellNumber.':I'.$itemCellNumber)->applyFromArray(['borders' => ['bottom' => ['borderStyle' => Border::BORDER_THIN]]]); + $itemCellNumber++; + + $this->worksheet->setCellValue('A'.$itemCellNumber, '(görnüşli tarapyň ýolbaşçysynyň ýa-da hususy telekeçiniň F.A.A.A.)'); + $this->worksheet->setCellValue('H'.$itemCellNumber, '(goly)'); + + $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); + $this->worksheet->getStyle('H'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); + + $itemCellNumber++; + $itemCellNumber++; + $itemCellNumber++; + $itemCellNumber++; + + $this->worksheet->setCellValue( + 'A'.$itemCellNumber, + sprintf( + '__________%s____________________________manat_______0________ teňňe möçberde iberilen haryt doly alyndy.', + Str::before(Str::ucfirst(moneyFormatInTurkmenLetter(floatval($total))), ' manat') + ) + ); + + $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); + + $itemCellNumber++; + $itemCellNumber++; + + $this->worksheet->setCellValue( + 'A'.$itemCellNumber, + '_______________________________________________________ ___________________ ' + ); + $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray(['font' => ['bold' => false, 'size' => 9, 'name' => 'Times New Roman']]); + + $itemCellNumber++; + + $this->worksheet->setCellValue( + 'A'.$itemCellNumber, + ' Satyn alyjynyň ýa-da kärhananyň ynam bildiren tarapynyň F.A.A A (goly)' + ); + $this->worksheet->getStyle('A'.$itemCellNumber)->applyFromArray([ + 'font' => ['bold' => false, 'size' => 8, 'name' => 'Times New Roman'], + 'alignment' => ['vertical' => Alignment::VERTICAL_TOP], + ]); + } } diff --git a/public/write.xls b/public/write.xls deleted file mode 100644 index 346ea3c..0000000 Binary files a/public/write.xls and /dev/null differ