Chore: Verschiebe Git-Repository in das Hauptverzeichnis und richte .gitignore ein

This commit is contained in:
salam committed 2026-10-19 10:11:04 +02:00
commit 96d0545193
502 files changed
+176027

No files matched your search

@@ -0,0 +1,288 @@
<?php
namespace HermannTelser\Gutachten\Downloads;
use HermannTelser\Gutachten\DB\DbFunction;
use HermannTelser\Gutachten\DB\Select\ObjekteExcel;
use HermannTelser\Gutachten\DB\Select\Select;
use HermannTelser\Gutachten\Utility\Message;
use Mpdf;
use PhpOffice\PhpSpreadsheet\IOFactory;
// Mpdf installed by typo3 extension
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use TYPO3\CMS\Core\Utility\GeneralUtility;
class ExcelNutzflaeche
{
/**
* @return array
*/
public static function download()
{
// Message::debug(__file__,__line__, "DOWNLOAD SPREAD SHEET");
DbFunction::$debug = 0;
$projektid = GeneralUtility::_GP('projekt_aktive');
if (0 == $projektid or !is_numeric($projektid)) {
die('aktive projekt ID fehlt!');
}
$_projekt = DbFunction::select(
'tx_gutachten_projekte',
['id', 'auftraggeber_id', 'gutachter_id', 'intname', 'name', 'beschreibung', 'erstellung', 'onoff', 'upload', 'allgemeinupload', 'recalculate', 'zuabTitel', 'nwbTitel', 'zustTitel', 'allgemTitel', 'loggia_title', 'nwbStartSeite', 'm1pP', 'm5pP', 'timestamp', 'status', 'erstelldatum'],
['id' => $projektid]
);
$projektname = str_replace(',', '', $_projekt[0]['name']);
$projektname = preg_replace("'\W, '", '', $projektname);
$file = file_get_contents(__DIR__.'/excel_header.txt');
$file = preg_replace("/[\n\r]/", '', $file);
$_headers = explode(',', $file);
//
// // Create new Spreadsheet object
$spreadsheet = new Spreadsheet();
// Set document properties
$spreadsheet->getProperties()->setCreator('Hermann Telser Nutzwertberechnung')
->setLastModifiedBy('Hermann Telser Nutzwertberechnung')
->setTitle('Nutzwertberechnung')
->setDescription('Nutzwertberechnung v10.1.3, © Hermann Telser 2007 - 2023');
// $_rot = [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50, 51, 52, 53, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 90, 91, 92, 93];
// $_gelb = [8, 19, 29];
$_rot = [2, 3, 4, 5, 6, 7, 9, 10, 11, 12, 13, 14, 20, 21, 22, 23, 24, 25, 26, 27, 28, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 51, 52, 53, 54, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 91, 92, 93, 94];
$_gelb = [8, 19, 29];
$row = '1';
$coll = 'A';
foreach ($_headers as $key => $value) {
$cell = $coll.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value);
if (\in_array($key, $_rot)) {
$spreadsheet->getActiveSheet()->getStyle($cell)->getFont()->getColor()->setARGB('ffffff');
$spreadsheet->getActiveSheet()->getStyle($cell)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('ff0000');
} elseif (\in_array($key, $_gelb)) {
$spreadsheet->getActiveSheet()->getStyle($cell)->getFill()->setFillType(\PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID)->getStartColor()->setARGB('ffff00');
}
$spreadsheet->getActiveSheet()
->getStyle($cell)
->getBorders()
->getBottom()
->setBorderStyle(\PhpOffice\PhpSpreadsheet\Style\Border::BORDER_THICK);
++$coll;
}
$_objekte_all = ObjekteExcel::select($projektid);
// print_r($_objekte_all);
// exit;
$row = 2;
foreach ($_objekte_all as $key => $value) {
$tt_raume_basis_id = $value['id'];
$cell = 'B'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['topNr']);
if (0 == $value['nodspl']) {
$cell = 'C'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['GNO']);
$cell = 'D'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['qmM1']);
// M2
$_methode_2 = DbFunction::selectJoin(
'tx_gutachten_raume_all',
['[>]tx_gutachten_raume_generell' => 'tt_raumart_id'],
[
'tx_gutachten_raume_all.uid',
'tx_gutachten_raume_all.geschoss',
'tx_gutachten_raume_all.raum',
'tx_gutachten_raume_all.factor',
'tx_gutachten_raume_all.qm',
'tx_gutachten_raume_all.NW',
'tx_gutachten_raume_all.NWungerundet',
'tx_gutachten_raume_all.NWm2',
'tx_gutachten_raume_all.uid',
'tx_gutachten_raume_all.timestamp',
'tx_gutachten_raume_generell.zunutzwert',
],
[
'AND' => [
'tx_gutachten_raume_all.tt_raumart_id' => [2, 8],
'tx_gutachten_raume_all.tt_raume_basis_id' => $tt_raume_basis_id,
'tx_gutachten_raume_all.pid' => $projektid,
'tx_gutachten_raume_generell.pid' => $projektid,
],
'ORDER' => 'tx_gutachten_raume_all.raum',
]
);
$zunutzwert = 0;
foreach ($_methode_2 as $k => $v) {
//if($b['tt_raumart_id']==2) //M2
//{
// $summeM2_factor += $b['NWm2'];
//}
//else //M2b
//{
// $summeM2_ohne_factor += $b['NWm2'];
//}
if (1 == $v['zunutzwert']) {
$zunutzwert += $v['qm'];
}
}
if ($zunutzwert > 0) {
$cell = 'E'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $zunutzwert);
}
$cell = 'F'.$row;
$gesamt = $value['qmM1'] + $zunutzwert;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $gesamt);
} else {
$cell = 'I'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['GNO']);
// STELLPLATZ qm
// Methode 5
$_m5 = DbFunction::select('tx_gutachten_raume_all', ['qm','raum'], ['AND' => ['tt_raume_basis_id' => $tt_raume_basis_id, 'tt_raumart_id' => 5]]);
$_qm = 0;
$raum = '';
foreach ($_m5 as $k => $m5) {
$_qm += (float) $m5['qm'];
$raum = (string) $m5['raum'];
}
// echo "\n" . $raum;
$cell = 'L'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, number_format($_qm, 2, ',', ''));
$cell = 'AT'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, "SALAM " . $raum);
}
// Parifizierer
$cell = 'R'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $_projekt[0]['gutachter']);
// LAGE
$_lage = Select::raume_all($projektid, $tt_raume_basis_id, 1);
$cell = 'AQ'.$row;
$lage = $_lage[0]['geschoss'] ?? '';
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $lage);
$cell = 'AR'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $value['orientierung']);
// WOHNUNG
if (0 == $value['nodspl']) {
// BESCHREIBUNG
$_beschreibung = Select::raume_all($projektid, $tt_raume_basis_id, [1, 2, 8]);
if (\count($_beschreibung) > 0) {
$_tmp = [];
// print_r($_beschreibung);
foreach ($_beschreibung as $key => $value) {
if (!\in_array($value['raum'], ['Loggia', 'Loggia 1', 'Loggia 2'])) {
$_tmp[] = $value['raum'];
}
}
$beschreibung = implode(', ', $_tmp);
$cell = 'AT'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $beschreibung);
}
// M2
if (\count($_methode_2) > 0) {
$_tmp = [];
foreach ($_methode_2 as $key => $value) {
if (\in_array($value['raum'], ['Loggia', 'Loggia 1', 'Loggia 2'])) {
$_tmp[] = $value['raum'].': '.number_format($value['qm'], 2, ',', '').' m²';
}
}
$beschreibung = implode(', ', $_tmp);
$cell = 'AU'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $beschreibung);
}
// M3
$_m3 = Select::raume_all($projektid, $tt_raume_basis_id, [3, 7]);
if (\count($_m3) > 0) {
$_tmp = [];
foreach ($_m3 as $key => $value) {
$_tmp[] = $value['raum'].' '.number_format($value['qm'], 2, ',', '').' m²';
}
$m3 = implode(', ', $_tmp);
$cell = 'AV'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $m3);
}
// M4
$_m4 = Select::raume_all($projektid, $tt_raume_basis_id, 4);
if (\count($_m4) > 0) {
$_tmp = [];
foreach ($_m4 as $key => $value) {
$_tmp[] = $value['raum'].' '.number_format($value['qm'], 2, ',', '').' m²';
}
$m4 = implode(', ', $_tmp);
$cell = 'AW'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $m4);
}
} else {
// Methode 5a & Methode 5b
// $_m56 = Select::raume_all($projektid, $tt_raume_basis_id, [5, 6, 9]);
$_m56 = DbFunction::select('tx_gutachten_raume_all', ['qm','raum'], ['AND' => ['tt_raume_basis_id' => $tt_raume_basis_id, 'tt_raumart_id' => [5, 6, 9] ],'ORDER' => ['tt_raumart_id' => 'ASC']]);
if (\count($_m56) > 0) {
$tmp1 = $_m56[0]['raum'];
$cell = 'AT'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $tmp1);
if(isset($_m56[1])){
$tmp2 = $_m56[1]['raum'] . ' ' . number_format($_m56[1]['qm'], 2, ',', '').' m²';
$cell = 'AV'.$row;
$spreadsheet->setActiveSheetIndex(0)->setCellValue($cell, $tmp2);
}
}
}
++$row;
}
// exit;
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$spreadsheet->setActiveSheetIndex(0);
// Rename worksheet
$spreadsheet->getActiveSheet()->setTitle('Daten für den Kaufvertrag');
// Redirect output to a client’s web browser (Xls)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="'.$projektname.'.xlsx"');
header('Cache-Control: max-age=0');
// If you're serving to IE 9, then the following may be needed
header('Cache-Control: max-age=1');
// If you're serving to IE over SSL, then the following may be needed
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
header('Pragma: public'); // HTTP/1.0
// Xls
$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
$writer->save('php://output');
exit;
}
}