385 lines
14 KiB
PHP
Executable File
385 lines
14 KiB
PHP
Executable File
<?php
|
|
|
|
require_once dirname(__FILE__) . '/PhpExcell/Classes/PHPExcel/IOFactory.php';
|
|
|
|
|
|
$data = array();
|
|
$date_from = date("Y-M-D");
|
|
$date_to = date("Y-m-d");
|
|
|
|
$tmp3 = array();
|
|
$vat_id;
|
|
|
|
|
|
// Ustawienia daty
|
|
if (!$_GET ['date_from']) {
|
|
$date_from = date("Y-M-01");
|
|
} else {
|
|
$date_from = $_GET ['date_from'];
|
|
}
|
|
if (!$_GET ['date_to']) {
|
|
$date_to = date("Y-m-d");
|
|
} else {
|
|
$date_to = $_GET ['date_to'];
|
|
}
|
|
// formatowanie daty
|
|
$Calendar_daFormat = str_replace("d", "%d", str_replace("m", "%m", str_replace("Y", "%Y", $GLOBALS ['timedate']->get_date_format())));
|
|
$date_from = $GLOBALS ['timedate']->to_display_date($date_from);
|
|
$date_to = $GLOBALS ['timedate']->to_display_date($date_to);
|
|
$date = new DateTime ();
|
|
$current_date_formatted = $date->format('d.m.Y');
|
|
|
|
|
|
global $app_list_strings;
|
|
global $mod_strings;
|
|
$db = $GLOBALS ['db'];
|
|
|
|
$subquery = "SELECT id
|
|
FROM documents
|
|
WHERE deleted= '0'
|
|
AND register_date >= STR_TO_DATE('" . $date_from . "','%d.%m.%Y')
|
|
AND register_date <= STR_TO_DATE('" . $date_to . "','%d.%m.%Y') ";
|
|
|
|
$query = " SELECT
|
|
dcn.id document_id,
|
|
dcn.parent_id,
|
|
dcn.document_number,
|
|
dcn.document_date,
|
|
dcn.category_id,
|
|
dcn.active_date,
|
|
dcn.register_date,
|
|
acc.name,
|
|
acc.register_address_city,
|
|
acc.register_address_postalcode,
|
|
acc.register_address_street,
|
|
acc.to_vatid
|
|
|
|
FROM
|
|
documents_accounts da
|
|
LEFT JOIN
|
|
documents dcn ON da.document_id = dcn.id
|
|
|
|
LEFT JOIN
|
|
accounts acc ON da.parent_id = acc.id
|
|
WHERE
|
|
da.parent_type = 'Account'
|
|
AND da.deleted = '0'
|
|
AND (category_id = 'invoice_costs'
|
|
or category_id = 'invoice_goods')
|
|
AND dcn.id IN (SELECT
|
|
id
|
|
FROM
|
|
documents
|
|
WHERE
|
|
deleted = '0'
|
|
|
|
|
|
AND dcn.register_date IS NOT NULL
|
|
AND dcn.id IN (" . $subquery . "))
|
|
ORDER BY dcn.document_name";
|
|
|
|
|
|
if (isset($_GET ['category_id'])) {
|
|
foreach ($_GET ['category_id'] as $selectedOption) {
|
|
array_push($category, $selectedOption);
|
|
}
|
|
}
|
|
|
|
$rows = $db->query($query);
|
|
while ($r = $db->fetchByAssoc($rows)) {
|
|
$row = array();
|
|
$queryvat = 'SELECT
|
|
id,
|
|
document_id,
|
|
vat_value,
|
|
vat_id,
|
|
netto,
|
|
vat
|
|
FROM
|
|
documents_vat where document_id = "' . $r ['document_id'] . '"
|
|
AND deleted = "0"
|
|
AND netto > "0"
|
|
ORDER BY position';
|
|
|
|
$rowsv = $db->query($queryvat);
|
|
$row ['vaty'] = array();
|
|
$row ['vatsumapozycja'] = 0;
|
|
$sumabrutto = 0;
|
|
while ($rr = $db->fetchByAssoc($rowsv)) {
|
|
$tmp2 = array();
|
|
$tmp2 ['vat_value'] = $rr ['vat_value'];
|
|
$tmp2 ['vat_id'] = $rr ['vat_id'];
|
|
$tmp2 ['netto'] = $rr ['netto'];
|
|
$tmp2 ['vat'] = $rr ['vat'];
|
|
$tmp2 ['sumabrutto'] += $rr['vat'] + $rr['netto'];
|
|
$row ['vatsumapozycja'] += $rr ['vat'];
|
|
$row ['value'] += $rr ['netto'] + $rr ['vat'];
|
|
$row ['vaty'] [] = $tmp2;
|
|
if (isset($tmp3 [$rr ['vat_value']])) {
|
|
$tmp3 [$rr ['vat_value']] ['sumanetto'] += $rr ['netto'];
|
|
$tmp3 [$rr ['vat_value']] ['sumavat'] += $rr ['vat'];
|
|
$sumanetto += $rr ['netto'];
|
|
$sumavat += $rr['vat'];
|
|
$sumabrutto += $sumanetto + $sumavat;
|
|
} else {
|
|
$tmp3 [$rr ['vat_value']] = array();
|
|
$tmp3 [$rr ['vat_value']] ['sumanetto'] = $rr ['netto'];
|
|
$tmp3 [$rr ['vat_value']] ['sumavat'] = $rr ['vat'];
|
|
$sumanetto += $rr ['netto'];
|
|
$sumavat += $rr['vat'];
|
|
$sumabrutto += $sumanetto + $sumavat;
|
|
}
|
|
}
|
|
|
|
$row ['document_id'] = $r ['document_id'];
|
|
$row ['id'] = $r ['id'];
|
|
$row ['document_number'] = $r ['document_number'];
|
|
$row ['name'] = $r ['name'];
|
|
$row ['register_address_postalcode'] = $r ['register_address_postalcode'];
|
|
$row ['register_address_city'] = $r ['register_address_city'];
|
|
$row ['register_address_street'] = $r ['register_address_street'];
|
|
$row ['document_date'] = $r ['document_date'];
|
|
$row ['category_id'] = $r ['category_id'];
|
|
$row ['active_date'] = $r ['active_date'];
|
|
$row ['to_vatid'] = $r ['to_vatid'];
|
|
$row ['register_date'] = $r ['register_date'];
|
|
$data [] = $row;
|
|
//$wartosc += $row ['value'];
|
|
$sumvat += $row ['vatsumapozycja'];
|
|
}
|
|
|
|
foreach ($tmp3 as $key => $value) {
|
|
if ($value ['sumavat'] == 0) {
|
|
$tmp3 [$key] ['sumavat'] = NULL;
|
|
}
|
|
}
|
|
// Create new PHPExcel object
|
|
echo date('H:i:s'), " Create new PHPExcel object", EOL;
|
|
$objPHPExcel = new PHPExcel();
|
|
|
|
// Set document properties
|
|
echo date('H:i:s'), " Set document properties", EOL;
|
|
$objPHPExcel->getProperties()->setCreator( "SaasSystems" )
|
|
->setLastModifiedBy ( "SaasSystems" )
|
|
->setTitle ( "SaasSystems - Rejestr sprzedaży VAT" )
|
|
->setSubject ( "SaasSystem - raport" )
|
|
->setDescription ( "" )
|
|
->setKeywords ( "" )
|
|
->setCategory ( "Reports" );
|
|
|
|
/* * ************************************************** */
|
|
/* * ***************** EXCELL Styles ****************** */
|
|
/* * ************************************************** */
|
|
// Set default widths and heights
|
|
$objPHPExcel->getActiveSheet()->getDefaultColumnDimension()->setWidth(15);
|
|
$objPHPExcel->getActiveSheet()->getDefaultRowDimension()->setRowHeight(20);
|
|
|
|
//tego nie ruszaj ani troche na razie
|
|
$headerStyle = array(
|
|
'alignment' => array(
|
|
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_CENTER,
|
|
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
|
|
),
|
|
'font' => array(
|
|
'bold' => true,
|
|
'color' => array('rgb' => 'FFFFFF'),
|
|
'name' => 'Verdana',
|
|
),
|
|
'fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'startcolor' => array(
|
|
'rgb' => '272822',
|
|
),
|
|
),
|
|
);
|
|
|
|
$categoryStyle = array(
|
|
'alignment' => array(
|
|
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
|
|
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
|
|
),
|
|
'font' => array(
|
|
'bold' => true,
|
|
'color' => array('rgb' => 'FFFFFF'),
|
|
'name' => 'Verdana',
|
|
),
|
|
'fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'startcolor' => array(
|
|
'rgb' => '4E5044',
|
|
),
|
|
),
|
|
);
|
|
|
|
$subCategoryStyle = array(
|
|
'alignment' => array(
|
|
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
|
|
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
|
|
),
|
|
'font' => array(
|
|
'bold' => true,
|
|
'color' => array('rgb' => 'FFFFFF'),
|
|
'name' => 'Verdana',
|
|
),
|
|
'fill' => array(
|
|
'type' => PHPExcel_Style_Fill::FILL_SOLID,
|
|
'startcolor' => array(
|
|
'rgb' => '8F937D',
|
|
),
|
|
),
|
|
);
|
|
|
|
$columnAlignRight = array(
|
|
'alignment' => array(
|
|
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_RIGHT,
|
|
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
|
|
),
|
|
);
|
|
|
|
$columnAlignLeft = array(
|
|
'alignment' => array(
|
|
'horizontal' => PHPExcel_Style_Alignment::HORIZONTAL_LEFT,
|
|
'vertical' => PHPExcel_Style_Alignment::VERTICAL_CENTER,
|
|
),
|
|
);
|
|
// tu masz szerokosci kolumn oraz wyrownania do ktorej strony
|
|
$objPHPExcel->setActiveSheetIndex(0)->getRowDimension('1')->setRowHeight(40);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('A')->setWidth(25);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('B')->setWidth(20);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('C')->setWidth(20);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('D')->setWidth(20);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('E')->setWidth(80);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('F')->setWidth(15);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('G')->setWidth(15);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension('H')->setWidth(15);
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("A2:A4000")->applyFromArray($columnAlignLeft);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("B2:B4000")->applyFromArray($columnAlignLeft);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("C2:C4000")->applyFromArray($columnAlignLeft);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("D2:D4000")->applyFromArray($columnAlignLeft);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("E2:E4000")->applyFromArray($columnAlignLeft);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("F2:F4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("G2:G4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("H2:H4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("I2:I4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("J2:J4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("K2:K4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("L2:L4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("M2:M4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("N2:N4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("O2:O4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("P2:P4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("Q2:Q4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("R2:R4000")->applyFromArray($columnAlignRight);
|
|
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle("A1:G1")->applyFromArray($headerStyle);
|
|
|
|
/* * ************************************************** */
|
|
/* * ******************* EXCELL Data ****************** */
|
|
/* * ************************************************** */
|
|
// Add header
|
|
//tu masz naglowki kolumn
|
|
$licznikLiter = ord('G');
|
|
$objPHPExcel->setActiveSheetIndex(0)
|
|
->setCellValue('A1', $mod_strings['LBL_DOC_NUMBER'])
|
|
->setCellValue('B1', $mod_strings['LBL_REGISTER_DATE'])
|
|
->setCellValue('C1', $mod_strings['LBL_CREATE_LAB'])
|
|
->setCellValue('D1', $mod_strings['LBL_SALES_NIP'])
|
|
->setCellValue('E1', $mod_strings['LBL_LIST_SUBJECT'])
|
|
->setCellValue('F1', $mod_strings['LBL_BUYER_VALUE_BRUTTO'])
|
|
->setCellValue('G1', $mod_strings['LBL_SUM_VAT']);
|
|
|
|
|
|
|
|
foreach ($tmp3 as $vatvalue => $vatnetto) {
|
|
$licznikLiter ++;
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . "2:" . chr($licznikLiter) . "4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension(chr($licznikLiter))->setWidth(15);
|
|
$objPHPExcel->setActiveSheetIndex(0)
|
|
->setCellValue(chr($licznikLiter) . '1', 'netto' . $vatvalue);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . '1')->applyFromArray($headerStyle);
|
|
if ($vatnetto['sumavat'] != null) {
|
|
$licznikLiter ++;
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . "2:" . chr($licznikLiter) . "4000")->applyFromArray($columnAlignRight);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getColumnDimension(chr($licznikLiter))->setWidth(15);
|
|
$objPHPExcel->setActiveSheetIndex(0)
|
|
->setCellValue(chr($licznikLiter) . '1', 'vat' . $vatvalue);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . '1')->applyFromArray($headerStyle);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/* * ************************************************** */
|
|
/* * ******************* EXCELL Data ****************** */
|
|
/* * ************************************************** */
|
|
// Add all data
|
|
$lastRowNumber = 2;
|
|
$rowNumber = 2;
|
|
|
|
// tu masz uzupelnianie danymi tabelki w pliku
|
|
|
|
foreach ($data as $key => $item) {
|
|
$licznikLiter = ord('G');
|
|
$objPHPExcel->setActiveSheetIndex(0)
|
|
->setCellValue('A' . ($rowNumber), $item['document_number'])
|
|
->setCellValue('B' . ($rowNumber), date("d.m.Y", strtotime($item['register_date'])))
|
|
->setCellValue('C' . ($rowNumber), date("d.m.Y", strtotime($item['active_date'])))
|
|
->setCellValue('D' . ($rowNumber), $item['to_vatid'])
|
|
->setCellValue('E' . ($rowNumber), html_entity_decode($item['name']))
|
|
->setCellValue('F' . ($rowNumber), number_format($item['value'], 2, ".", ""))
|
|
->setCellValue('G' . ($rowNumber), number_format($item['vatsumapozycja'], 2, ".", ""));
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('F' . ($rowNumber))->getNumberFormat()->setFormatCode("#,#0.#0 zł");
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle('G' . ($rowNumber))->getNumberFormat()->setFormatCode("#,#0.#0 zł");
|
|
|
|
|
|
foreach ($tmp3 as $vatname => $vaty) {
|
|
$licznikLiter++;
|
|
$wypiszVat = null;
|
|
$prawdafalsz = false;
|
|
foreach ($item['vaty'] as $vatvalue => $vatnetto) {
|
|
if ($vatname == $vatnetto['vat_value']) {
|
|
$wypiszVat = $vatnetto;
|
|
unset($item['vaty'][$vatvalue]);
|
|
break;
|
|
}
|
|
}
|
|
|
|
if ($wypiszVat != null) {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue((chr($licznikLiter) ) . ($rowNumber), $wypiszVat['netto']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . ($rowNumber))->getNumberFormat()->setFormatCode("#,#0.#0 zł");
|
|
if ($vaty ['sumavat'] != null) {
|
|
$licznikLiter++;
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue((chr($licznikLiter) ) . ($rowNumber), $wypiszVat['vat']);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . ($rowNumber))->getNumberFormat()->setFormatCode("#,#0.#0 zł");
|
|
}
|
|
} else {
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue((chr($licznikLiter) ) . ($rowNumber), 0);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . ($rowNumber))->getNumberFormat()->setFormatCode("#,#0.#0 zł");
|
|
if ($vaty ['sumavat'] != null) {
|
|
$licznikLiter++;
|
|
$objPHPExcel->setActiveSheetIndex(0)->setCellValue((chr($licznikLiter) ) . ($rowNumber), 0);
|
|
$objPHPExcel->setActiveSheetIndex(0)->getStyle(chr($licznikLiter) . ($rowNumber))->getNumberFormat()->setFormatCode("#,#0.#0 zł");
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
$rowNumber++;
|
|
$lastRowNumber++;
|
|
}
|
|
|
|
|
|
|
|
|
|
// Rename worksheet
|
|
$objPHPExcel->getActiveSheet()->setTitle($mod_strings['LBL_REPORT_RECEIVE_REGISTER']);
|
|
|
|
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
|
$objPHPExcel->setActiveSheetIndex(0);
|
|
|
|
// Save Excel 2007 file
|
|
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
|
|
$objWriter->save(__DIR__ . "/ExcelFiles/RaportZakupu.xls");
|
|
?>
|