From 5b7147c1e7976786e744f520bd0b34a50cf3ee34 Mon Sep 17 00:00:00 2001 From: Nurmuhammet Allanov Date: Tue, 12 Nov 2024 23:22:50 +0500 Subject: [PATCH] little code readabilty improvement --- .../Invoice/Actions/GenerateInvoiceExcell.php | 248 +++++++++--------- public/write.xls | Bin 14336 -> 0 bytes 2 files changed, 128 insertions(+), 120 deletions(-) delete mode 100644 public/write.xls 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 346ea3cea844c5f4af93db38db1039061381d27d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14336 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