'Styczeń', 2 => 'Luty', 3 => 'Marzec', 4 => 'Kwiecień', 5 => 'Maj', 6 => 'Czerwiec', 7 => 'Lipec', 8 => 'Sierpień', 9 => 'Wrzesień', 10 => 'Październik', 11 => 'Listopad', 12 => 'Grudzizeń' ]; $whereFilter = ""; $whereFilterBranch2 = ""; $otherGroupFilter = ""; $relationsQuery = " FROM `ecminvoiceouts` INNER JOIN `accounts` ON (accounts.id = ecminvoiceouts.parent_id) INNER JOIN `ecminvoiceoutitems` ON (ecminvoiceoutitems.ecminvoiceout_id = ecminvoiceouts.id) INNER JOIN `ecmproducts` ON (ecmproducts.id = ecminvoiceoutitems.ecmproduct_id) " /*. $relationsQueryReceipts*/ . " "; $relationsQueryRec = " FROM `ecmreceipts` INNER JOIN `accounts` ON (accounts.id = ecmreceipts.parent_id) INNER JOIN `ecmreceiptitems` ON (ecmreceiptitems.ecmreceipt_id = ecmreceipts.id) INNER JOIN `ecmproducts` ON (ecmproducts.id = ecmreceiptitems.ecmproduct_id) " /*. $relationsQueryReceipts*/ . " "; $dataInvoice = EcmInvoiceOut::getInvoiceList(); $dataRecipe = EcmReceipt::getReceiptsList(); print_r($dataInvoice); function get_items_fk( $request,$db,$whereFilter,$whereFilterBranch2,$otherGroupFilter,$relationsQuery){ // Years and months $years_group = isset($request['years_group']) ? $request['years_group'] : [0]; $months_group = isset($request['months_group']) ?$request['months_group'] : [0]; $document_type=isset($request['document_sales_type']) ? $request['document_sales_type'] : ['invoice','invoice_correct','recipe','recipe_correct']; if((count($years_group) > 0) AND (count($months_group) > 0)){ $_months_group = strlen($months_group[0]) == 1 ? '0'.$months_group[0] : $months_group[0]; $value = $years_group[0] . '-' . $_months_group; $whereFilter .= ' AND ecminvoiceouts.register_date >= "' . $value . '" '; } //print_r($document_type); // Types $types_group = isset($request['types_group']) ? $request['types_group'] : [0]; if(count($types_group) > 0){ if(in_array("",$types_group)){ $index = array_search("",$types_group); unset($types_group[$index]); } if(count($types_group) > 0){ $value = array_values ( $types_group ); //$whereFilter .= ' AND accounts.account_type IN ("' . implode('","',$value) . '") '; } } // Group_ks/* $product_group = isset($request['product_group']) ?$request['product_group'] : [0]; if(count($product_group) > 0){ if(in_array("",$product_group)){ $index = array_search("",$product_group); unset($product_group[$index]); } if(count($product_group) > 0){ $value = array_values ( $product_group ); $whereFilterBranch2 = $whereFilter; $otherGroupFilter .= $whereFilter; //$whereFilter .= ' AND ecmproducts.ks_group IN ("' . implode('","',$value) . '") '; //$whereFilterBranch2 .= ' AND ecmproducts.ks_group NOT IN ("' . implode('","',$value) . '")'; $otherGroupFilter .= $whereFilterBranch2; } } // Other_group_ks $other_group_ks_filter = isset($request['product_other_group']) ? $request['product_other_group'] : [0]; if(count($other_group_ks_filter) > 0){ if(in_array("",$other_group_ks_filter)){ $index = array_search("",$other_group_ks_filter); unset($other_group_ks_filter[$index]); } if(count($other_group_ks_filter) > 0){ $value = array_values ( $other_group_ks_filter ); $whereFilterBranch2 .= ' AND ecmproducts.ks_group IN ("' . implode('","',$value) . '") '; } } // Shop $stocks = isset($request['stocks']) ? $request['stocks'] : [0]; if(count($stocks)>0){ if(in_array("",$stocks)){ $indeks = array_search("",$stocks); unset($stocks[$indeks]); } if(count($stocks)>0){ $stocksList = array(); $value = array_values ( $stocks ); $whereFilter .= ' AND ecminvoiceouts.stock_id IN ("' . implode('","',$value) . '")'; $whereFilterBranch2 .= $whereFilter; $otherGroupFilter .= $whereFilter; } } // Added to query check deleted and canceled fields if(in_array('invoice',$document_type)){ $document_types[]='normal'; } if(in_array('invoice_correct',$document_type)){ $document_types[]='correct'; } $whereFilter .= " AND ecminvoiceouts.deleted=0 AND ecminvoiceouts.canceled=0 AND ecminvoiceouts.type in ('".implode("','",$document_types)."') "; $relationsQueryReceipts = " "; $total_netto_request = " ROUND(SUM( CASE WHEN ecminvoiceouts.type = 'normal' THEN ecminvoiceoutitems.total_netto * CASE WHEN ecminvoiceouts.currency_value_nbp != '' THEN ecminvoiceouts.currency_value_nbp ELSE 1 END ELSE ecminvoiceoutitems.total_netto_corrected * CASE WHEN ecminvoiceouts.currency_value_nbp != '' THEN ecminvoiceouts.currency_value_nbp ELSE 1 END END ),2) "; $pre_table_request = " SELECT COUNT(DISTINCT accounts.id) AS `accounts_count2`, COUNT(ecminvoiceouts.id) AS `ecminvoiceouts_count2`, MONTH(ecminvoiceouts.register_date) AS `ecminvoiceouts_month2`, YEAR(ecminvoiceouts.register_date) AS `ecminvoiceouts_year2`, accounts.account_type AS `accounts_type2` " . $relationsQuery . " " . $whereFilter . " GROUP BY `ecminvoiceouts_year2`, `ecminvoiceouts_month2`, `accounts_type2` -- ORDER BY `ecminvoiceouts_year2`, `ecminvoiceouts_month2`, `accounts_type2` "; $pre_table_request_other_groups = " SELECT accounts.account_type AS `accounts_type3`, ecmproducts.ks_group AS `ecmproducts_group_ks3`, MONTH(ecminvoiceouts.register_date) AS `ecminvoiceouts_month3`, YEAR(ecminvoiceouts.register_date) AS `ecminvoiceouts_year3`, " . $total_netto_request . " AS `ecminvoiceouts_total_brutto3` " . $relationsQuery . " " . $whereFilterBranch2 . " "; $pre_table_result_other_groups = $db->query($pre_table_request_other_groups); while($row = $db->fetchByAssoc($pre_table_result_other_groups)) { $pre_table_result_other_groups_array[] = $row; } //print_r($pre_table_result_other_groups_array); // Generate table data $table_request = " SELECT counter.`accounts_count2`, counter.`ecminvoiceouts_count2`, accounts.account_type AS `accounts_type`, ecmproducts.ks_group AS `ecmproducts_group_ks`, MONTH(ecminvoiceouts.register_date) AS `ecminvoiceouts_month`, YEAR(ecminvoiceouts.register_date) AS `ecminvoiceouts_year`, " . $total_netto_request . " AS `ecminvoiceouts_total_brutto` " . $relationsQuery . " " . $whereFilter . " INNER JOIN (" . $pre_table_request . ") AS counter ON (counter.ecminvoiceouts_year2 = YEAR(ecminvoiceouts.register_date)) AND (counter.ecminvoiceouts_month2 = MONTH(ecminvoiceouts.register_date)) AND (counter.accounts_type2 = accounts.account_type) GROUP BY `ecminvoiceouts_year`, `ecminvoiceouts_month`, `accounts_type`, `ecmproducts_group_ks` -- ORDER BY `ecminvoiceouts_year`, `ecminvoiceouts_month`, `accounts_type`, `ecmproducts_group_ks` "; //print_r('
');
//print_r($table_request);

$table_result = $db->query($table_request);
while($row = $db->fetchByAssoc($table_result)) { $table_result_array[] = $row; }

// Initial variable for generate array


// If table_result is not empty
if(!empty($table_result_array)):
	// Genarate main array
	foreach ($table_result_array as $table_key => $table) {

		if(empty($pre_table_result_other_groups_array)) { $pre_table_result_other_groups_array = []; }

		foreach ($pre_table_result_other_groups_array as $pre_table_key => $pre_table) {
			$generate_table_array
			[$table['ecminvoiceouts_year']]
			[$table['ecminvoiceouts_month']]
			[$table['accounts_type']]
			['accounts_count'] = $table['accounts_count2'];

			$generate_table_array
			[$table['ecminvoiceouts_year']]
			[$table['ecminvoiceouts_month']]
			[$table['accounts_type']]
			['documents_count'] = $table['ecminvoiceouts_count2'];

			$generate_table_array
			[$table['ecminvoiceouts_year']]
			[$table['ecminvoiceouts_month']]
			[$table['accounts_type']]
			['accounts_type']
			[$table['ecmproducts_group_ks']] = $table['ecminvoiceouts_total_brutto'];

			if(!empty($pre_table_result_other_groups_array)) {
				if(
					$table['ecminvoiceouts_year'] == $pre_table['ecminvoiceouts_year3'] &&
					$table['ecminvoiceouts_month'] == $pre_table['ecminvoiceouts_month3'] &&
					$table['accounts_type'] == $pre_table['accounts_type3']
				) {
					$generate_table_array
					[$table['ecminvoiceouts_year']]
					[$table['ecminvoiceouts_month']]
					[$table['accounts_type']]
					['together'] = $pre_table['ecminvoiceouts_total_brutto3'];
				}
			}

		}
	}
endif;
if (isset($generate_table_array) && count($generate_table_array)>0){
return $generate_table_array;
}else{
	return [];
}
}
//koniec  fk 
// poczatek paragony 
function get_items_rec( $request,$db,$whereFilter,$whereFilterBranch2,$otherGroupFilter,$relationsQuery){

	// Years and months
	$years_group = isset($request['years_group']) ? $request['years_group'] : [0];
	$months_group = isset($request['months_group']) ?$request['months_group'] : [0];
	$document_type=isset($request['document_sales_type']) ? $request['document_sales_type'] : [0];
	if((count($years_group) > 0) AND (count($months_group) > 0)){
		$_months_group = strlen($months_group[0]) == 1 ? '0'.$months_group[0] : $months_group[0];
		$value = $years_group[0] . '-' . $_months_group;
		$whereFilter  .= ' AND ecmreceipts.register_date >= "' . $value . '" ';
	}
	//print_r($document_type);
	// Types
	$types_group = isset($request['types_group']) ? $request['types_group'] : [0];
	if(count($types_group) > 0){
		if(in_array("",$types_group)){
			$index = array_search("",$types_group);
			unset($types_group[$index]);
		}
		if(count($types_group) > 0){
			$value = array_values ( $types_group );
			//$whereFilter  .= ' AND accounts.account_type IN ("' . implode('","',$value) . '") ';
		}
	}

	// Group_ks
	$product_group = isset($request['product_group']) ?$request['product_group'] : [0];
	if(count($product_group) > 0){
		if(in_array("",$product_group)){
			$index = array_search("",$product_group);
			unset($product_group[$index]);
		}
		if(count($product_group) > 0){
			$value = array_values ( $product_group );

			$whereFilterBranch2 = $whereFilter;
			$otherGroupFilter .= $whereFilter;

			//$whereFilter .= ' AND ecmproducts.ks_group IN ("' . implode('","',$value) . '") ';
			//$whereFilterBranch2 .= ' AND ecmproducts.ks_group NOT IN ("' . implode('","',$value) . '")';

			$otherGroupFilter .= $whereFilterBranch2;
		}
	}

	// Other_group_ks
	$other_group_ks_filter = isset($request['product_other_group']) ? $request['product_other_group'] : [0];
	if(count($other_group_ks_filter) > 0){
		if(in_array("",$other_group_ks_filter)){
			$index = array_search("",$other_group_ks_filter);
			unset($other_group_ks_filter[$index]);
		}
		if(count($other_group_ks_filter) > 0){
			$value = array_values ( $other_group_ks_filter );

			//$whereFilterBranch2 .= ' AND ecmproducts.ks_group IN ("' . implode('","',$value) . '") ';
		}
	}

	// Shop
	$stocks = isset($request['stocks']) ? $request['stocks'] : [0];
	if(count($stocks)>0){
		if(in_array("",$stocks)){
			$indeks = array_search("",$stocks);
			unset($stocks[$indeks]);
		}
		if(count($stocks)>0){
			$stocksList = array();
			$value = array_values ( $stocks );

			$whereFilter  .= ' AND ecmreceipts.stock_id IN ("' . implode('","',$value) . '")';
			$whereFilterBranch2 .= $whereFilter;
			$otherGroupFilter .= $whereFilter;
		}
	}

	// Added to query check deleted and canceled fields
	if(in_array('recipe',$document_type)){
		$document_types[]='normal';
	}
	if(in_array('recipe_correct',$document_type)){
		$document_types[]='correct';
	}
	$whereFilter  .= "
	AND ecmreceipts.deleted=0
	AND ecmreceipts.canceled=0
	AND ecmreceipts.type in ('".implode("','",$document_types)."')
";


	$relationsQueryReceipts = "
	
";



	$total_netto_request = "

	ROUND(SUM(

		CASE
		WHEN ecmreceipts.type = 'normal' THEN

			ecmreceiptitems.total_netto *

			CASE WHEN 0 THEN
			1
			ELSE 1
			END

		ELSE

			ecmreceiptitems.total_netto_corrected *

			CASE WHEN 0 THEN
			1
			ELSE 1
			END

		END

	),2)

";

	$pre_table_request = "

	SELECT

	COUNT(DISTINCT accounts.id) AS `accounts_count2`,
	COUNT(ecmreceipts.id) AS `ecminvoiceouts_count2`,

    MONTH(ecmreceipts.register_date) AS `ecminvoiceouts_month2`,
	YEAR(ecmreceipts.register_date) AS `ecminvoiceouts_year2`,

	accounts.account_type AS `accounts_type2`

	" . $relationsQuery . "

	" . $whereFilter . "

	GROUP BY `ecminvoiceouts_year2`, `ecminvoiceouts_month2`, `accounts_type2`
	-- ORDER BY `ecminvoiceouts_year2`, `ecminvoiceouts_month2`, `accounts_type2`

";

	$pre_table_request_other_groups = "
	SELECT

	accounts.account_type AS `accounts_type3`,
	ecmproducts.ks_group AS `ecmproducts_group_ks3`,

	MONTH(ecmreceipts.register_date) AS `ecminvoiceouts_month3`,
	YEAR(ecmreceipts.register_date) AS `ecminvoiceouts_year3`,

	" . $total_netto_request . " AS `ecminvoiceouts_total_brutto3`

	" . $relationsQuery . "

	" . $whereFilterBranch2 . "



";

	$pre_table_result_other_groups = $db->query($pre_table_request_other_groups);
	while($row = $db->fetchByAssoc($pre_table_result_other_groups)) { $pre_table_result_other_groups_array[] = $row; }
	//print_r($pre_table_result_other_groups_array);
	// Generate table data
	$table_request = "
	SELECT

	counter.`accounts_count2`,
	counter.`ecminvoiceouts_count2`,

	accounts.account_type AS `accounts_type`,

	ecmproducts.ks_group AS `ecmproducts_group_ks`,

	MONTH(ecmreceipts.register_date) AS `ecminvoiceouts_month`,
	YEAR(ecmreceipts.register_date) AS `ecminvoiceouts_year`,

	" . $total_netto_request . " AS `ecminvoiceouts_total_brutto`

	" . $relationsQuery . "

	" . $whereFilter . "

	INNER JOIN (" . $pre_table_request . ") AS counter

	ON (counter.ecminvoiceouts_year2 = YEAR(ecmreceipts.register_date))
    AND (counter.ecminvoiceouts_month2 = MONTH(ecmreceipts.register_date))
    AND (counter.accounts_type2 = accounts.account_type)

	GROUP BY `ecminvoiceouts_year`, `ecminvoiceouts_month`, `accounts_type`, `ecmproducts_group_ks`
	-- ORDER BY `ecminvoiceouts_year`, `ecminvoiceouts_month`, `accounts_type`, `ecmproducts_group_ks`
";
	
	$table_result = $db->query($table_request);
	while($row = $db->fetchByAssoc($table_result)) { $table_result_array[] = $row; }

	// Initial variable for generate array


	// If table_result is not empty
	if(!empty($table_result_array)):
	// Genarate main array
	foreach ($table_result_array as $table_key => $table) {

		if(empty($pre_table_result_other_groups_array)) { $pre_table_result_other_groups_array = []; }

		foreach ($pre_table_result_other_groups_array as $pre_table_key => $pre_table) {
			$generate_table_array
			[$table['ecminvoiceouts_year']]
			[$table['ecminvoiceouts_month']]
			[$table['accounts_type']]
			['accounts_count'] = $table['accounts_count2'];

			$generate_table_array
			[$table['ecminvoiceouts_year']]
			[$table['ecminvoiceouts_month']]
			[$table['accounts_type']]
			['documents_count'] = $table['ecminvoiceouts_count2'];

			$generate_table_array
			[$table['ecminvoiceouts_year']]
			[$table['ecminvoiceouts_month']]
			[$table['accounts_type']]
			['accounts_type']
			[$table['ecmproducts_group_ks']] = $table['ecminvoiceouts_total_brutto'];

			if(!empty($pre_table_result_other_groups_array)) {
				if(
						$table['ecminvoiceouts_year'] == $pre_table['ecminvoiceouts_year3'] &&
						$table['ecminvoiceouts_month'] == $pre_table['ecminvoiceouts_month3'] &&
						$table['accounts_type'] == $pre_table['accounts_type3']
						) {
							$generate_table_array
							[$table['ecminvoiceouts_year']]
							[$table['ecminvoiceouts_month']]
							[$table['accounts_type']]
							['together'] = $pre_table['ecminvoiceouts_total_brutto3'];
						}
			}

		}
	}
	endif;
if (isset($generate_table_array) && count($generate_table_array)>0){
return $generate_table_array;
}else{
	return [];
}
}
//koniec paragony

// Get all groups from ecmproducts table (with filter)
$group_ks = [];
$group_ks_result = $db->query("SELECT DISTINCT `ks_group` " . $relationsQuery . " " . $whereFilter . " ORDER BY `ks_group`");
while($row = $db->fetchByAssoc($group_ks_result)) { $group_ks[$row['ks_group']] = $app_list_strings['ecmproducts_group_ks_dom'][ $row['ks_group'] ]; }

// Get all groups from ecmproducts table (without filter)
$group_ks_without_filter = [];
$group_ks_result_without_filter = $db->query("SELECT DISTINCT `ks_group` " . $relationsQuery . " ORDER BY `ks_group`");
while($row = $db->fetchByAssoc($group_ks_result_without_filter)) { $group_ks_without_filter[$row['ks_group']] = $app_list_strings['ecmproducts_group_ks_dom'][ $row['ks_group'] ]; }

// Get groups that is not selected from ecmproducts table
$other_group_ks = [];
$other_group_ks_result = $db->query("SELECT DISTINCT `ks_group` " . $relationsQuery . " " . $otherGroupFilter . " ORDER BY `ks_group`");
while($row = $db->fetchByAssoc($other_group_ks_result)) { $other_group_ks[$row['ks_group']] = $app_list_strings['ecmproducts_group_ks_dom'][ $row['ks_group'] ]; }

// Get all types from accounts table (filter)
$types = [];
$types_result = $db->query("SELECT DISTINCT accounts.account_type " . $relationsQuery . " ORDER BY `account_type`");
while($row = $db->fetchByAssoc($types_result)) { $types[$row['account_type']] = $app_list_strings['account_type_dom'][ $row['account_type'] ]; }

//Get Stock List
$stock_array = array(""=>"");
$stock_request = $db->query("SELECT id, name FROM ecmstocks WHERE deleted=0");
while($row = $db->fetchByAssoc($stock_request)){ $stock_array[$row['id']] = $row['name']; }

// Get years from ecminvoiceouts table
$years = [];
$years_result = $db->query("SELECT DISTINCT YEAR(ecminvoiceouts.register_date) AS `years` " . $relationsQuery . " ORDER BY `years`");
while($row = $db->fetchByAssoc($years_result)) { $years[] = $row['years']; }

// Get months from ecminvoiceouts table
$months = [];
$months_result = $db->query("SELECT DISTINCT MONTH(ecminvoiceouts.register_date) AS `months` " . $relationsQuery . " ORDER BY `months`");
while($row = $db->fetchByAssoc($months_result)) { $months[$row['months']] = $row['months']; }

// Generate file pdf
function pdf($smarty) {
	include_once ("include/MPDF60/mpdf60/mpdf.php");
	include_once ("modules/EcmSysInfos/EcmSysInfo.php");

	$EcmSysInfos = new EcmSysInfo();

	if(!$_REQUEST['date_from']) {
		$date_from = date("01.m.Y");
	} else {
		$date_from = $_REQUEST["date_from"];
	}

	if(!$_REQUEST['date_to']) {
		$date_to = date("d.m.Y");
	} else {
		$date_to = $_REQUEST["date_to"];
	}

	$content = $smarty->fetch('modules/EcmReports/tpls/ReportSalesByGroupPDF.tpl');
	
	$mPDF = new mPDF ( '', 'A4', null, 'helvetica',  10, 10, 10, 10, 5, 5 );
	$mPDF->mirrorMargins = 1;
	//print_r($content);
	
	$mPDF->WriteHTML($content);

	$dir = 'upload/' . $EcmSysInfos->getDatabaseName() . '/pdf/EcmReports/';
	if(!is_dir($dir)){
		mkdir($dir, '755', true);
	}
	$file_name = str_replace(".","",$date_from) . "_" . str_replace(".","",$date_to) ."_Raport_Sprzedazy_Po_Gropach.pdf";
	$mPDF->Output( $file_name, "F");

	print $file_name;
}

// Generate JSON-array for Chart
function chart_json($generate_table_array, $group_ks, $types,$req) {

	$chart_column = !empty($_REQUEST['chart_column'][0]) ? $_REQUEST['chart_column'] : ["1efd09c99174463e7f3a81d80c4d6668"];
	$group_ks_column = $chart_column[0];
 
	if(!empty($_REQUEST['types_group'][0])) {
		// Translate all index in text
		foreach ($_REQUEST['types_group'] as $types_request_key => $type_request) {
			$types_request[$types_request_key] = $types[$type_request];
		}
	} elseif(isset($types)) {
		$types_request = $types;
	} else {
		$types_request[] = '';
	};

	$head[] = 'Data';
	
	foreach ($types_request as $type_request) { $head[] = $type_request; }
	$head[]='total';
	// Add header to main array
	
	
	
	// Generate array
	$count=1;
	
	
			$arr[0] = $head;
	
	foreach ($generate_table_array as $year_key => $year) {
		foreach ($year as $month_key => $month) {

			$ccc=0;
			$i=0;
			foreach ($month as $type_key => $types_val) {
			//print_r($type_key);print_r('

'); //print_r($types_val);print_r('

'); if($ccc == 0) { $arr[$count][] = $year_key."-".$month_key; // date $ccc++; } if($group_ks_column == 'accounts_count' ||$group_ks_column == 'documents_count') { $arr[$count][] = (int)$types_val[$group_ks_column]; } elseif($group_ks_column=='suma'){ if(in_array($type_key,$req)){ $arr[$count][]=$types_val['accounts_type']['total']; } //print_r($types_val); } else { foreach ($types_val['accounts_type'] as $groups_key => $groups_val) { $name=$types[$type_key]; $kx=array_search($name,$head); if($type_key=='suma' || $type_key=='total'){ $kx=count($head)-1; } //var_dump($kx); //print_r('

'); //var_dump($groups_val);print_r('

'); if($kx!=0){ if($groups_key == $group_ks_column ) { $arr[$count][$kx] = (int)$groups_val; } } } } } $count++; } } $header_count=0; foreach($arr as $a_key => $a) { $max=count($head); for($i=0;$i<$max;$i++){ if(!isset($arr[$a_key][$i])){ $arr[$a_key][$i]=0; } } //$arr[$a_key] } echo json_encode($arr); //echo "
";
	//echo json_encode($arr);

	
}

// Genearte file xls
function xsl($group_ks, $array_months, $types, $generate_table_array) {
	$filename='modules/Home/Files/raport_sprzedazy_w_groupach_'.date('d_m-Y').'.csv';
	$fp = fopen($filename,'w');

	$header = generate_header($group_ks);
	$line = generate_line($group_ks, $array_months, $types, $generate_table_array);

	fwrite($fp, implode(";", $header).PHP_EOL);

	foreach ($line as $l) {
		$l = coding($l);
		fwrite($fp, implode(";", $l).PHP_EOL);
	}

	print $filename;

}

// Generate header for xls file
function generate_header($group_ks) {
	$header = [];

	$header[] = 'ROK';
	$header[] = 'MIESIĄC';
	$header[] = 'PROFIL GŁÓWNY';
	$header[] = 'ILU ODBIORCÓW W LICZBACH';
	$header[] = 'ILE DOKUMENTÓW';

	foreach ($group_ks as $list_group_k) { $header[] = $list_group_k; }

	return $header;
}

// Genearte body for xls file
function generate_line($group_ks, $array_months, $types, $generate_table_array) {
	$line = [];

	foreach ($generate_table_array as $year_key => $year) {
		foreach ($year as $month_key => $month) {
			foreach ($month as $type_key => $type) {

				$line[$year_key."_".$month_key."_".$type_key]['ecminvoiceouts_year'] = $year_key;
				$line[$year_key."_".$month_key."_".$type_key]['ecminvoiceouts_month'] = $array_months[$month_key];
				$line[$year_key."_".$month_key."_".$type_key]['accounts_type'] = $types[$type_key];
				$line[$year_key."_".$month_key."_".$type_key]['accounts_count'] = $type['accounts_count'];
				$line[$year_key."_".$month_key."_".$type_key]['documents_count'] = $type['documents_count'];
				foreach ($group_ks as $groups_key => $groups) {

					$count=0;
					foreach ($type['accounts_type'] as $group_key => $group) {

						if($groups_key == $group_key) {
							$count=1;
							$line[$year_key."_".$month_key."_".$type_key][$group_key] = $group;
						}
					}

					if($count == 0) {
						$line[$year_key."_".$month_key."_".$type_key][$groups_key] = '';
					}
				}

			}
		}
	}

	return $line;
}

function coding_pl($variable) {
	return  preg_replace("/[^A-ZłŁąĄęĘżŻ,:.źŹ%ćĆńŃśŚóÓa-z0-9\-\/]/", ' ', preg_replace("/\r\n|\r|\n/", ' ', html_entity_decode($variable)));
}

// UTF-8 -> Windows-1250
function coding($data) {
	foreach ($data as $k=>$v){
		$data[$k]=iconv('UTF-8', 'windows-1250', $data[$k]);;
	}

	return $data;
}
$generate_table_array=[];
$document_type=isset($_REQUEST['document_sales_type']) ? $_REQUEST['document_sales_type'] : ['invoice','invoice_correct','recipe','recipe_correct'];

if(count($_REQUEST)>2){
	
	if(in_array('invoice',$document_type) ||in_array('invoice_correct',$document_type) ){
$generate_table_array_fk=get_items_fk($_REQUEST,$db,$whereFilter,$whereFilterBranch2,$otherGroupFilter,$relationsQuery);
	}
	if(in_array('recipe',$document_type) ||in_array('recipe_correct',$document_type) ){
$generate_table_array_rec=get_items_rec($_REQUEST,$db,$whereFilter,$whereFilterBranch2,$otherGroupFilter,$relationsQueryRec);
	}
	//print_r($generate_table_array_fk);
	
	if(!isset($generate_table_array_fk) || count($generate_table_array_fk)==0){
		$generate_table_array=$generate_table_array_rec;
		
	}elseif(!isset($generate_table_array_rec) || count($generate_table_array_rec)==0){
		$generate_table_array=$generate_table_array_fk;
		
	}else{
		$generate_table_array=$generate_table_array_fk;
		foreach ($generate_table_array_rec as $key =>$value){
			
			if(isset($generate_table_array[$key])){
				foreach($value as $miech =>$reszta){
					if(isset($generate_table_array[$key][$miech])){
						foreach($reszta as $kont =>$data){
							if(isset($generate_table_array[$key][$miech][$kont])){
								$generate_table_array[$key][$miech][$kont]['accounts_count']+=$data['accounts_count'];
								$generate_table_array[$key][$miech][$kont]['documents_count']+=$data['documents_count'];
								 foreach($data['accounts_type'] as $grupa =>$ilosc){
								 			if(isset($generate_table_array[$key][$miech][$kont]['accounts_type'][$grupa])){
								 			$generate_table_array[$key][$miech][$kont]['accounts_type'][$grupa]+=$ilosc;
								 		
								 		 	}
								 	
								 }
								
								
							}
							
						}
						
						
					}
					
				}
					
			}
			
			
		}//koniec foreacha glownego
	
	}// koniec elsa 
}

//dodawanie sumy na koncu 

	
	
	//print_r($_REQUEST['types_group_sum']);
	foreach($generate_table_array as $rok=>$data_rok){
		
		foreach($data_rok as $miech=>$data_miech ){
			foreach($data_miech as $typ_gs => $data_type_gs){
				$total_sum_group=0;
				//print_r($data_type_gs);print_r('

'); if(!in_array($typ_gs,$_REQUEST['types_group'])){ if(!isset($generate_table_array[$rok][$miech]['suma'])){ $generate_table_array[$rok][$miech][suma] = array(); } $generate_table_array[$rok][$miech]['suma']['accounts_count']+=$data_type_gs['accounts_count']; $generate_table_array[$rok][$miech]['suma']['documents_count']+=$data_type_gs['documents_count']; } foreach($data_type_gs['accounts_type'] as $sum_k => $sum_data){ // sumowanie w kolumnach if(!in_array($typ_gs,$_REQUEST['types_group'])){ $generate_table_array[$rok][$miech]['suma']['accounts_type'][$sum_k]+=$sum_data; } } } } }//koniec glownego foreacha foreach($generate_table_array as $rok=>$data_rok){ //sumowanie w wierszach foreach($data_rok as $miech=>$data_miech ){ foreach($data_miech as $typ_gs => $data_type_gs){ foreach($data_type_gs['accounts_type'] as $sum_k => $sum_data){ if(!in_array($sum_k,$_REQUEST['product_group'])){ if(!isset($generate_table_array[$rok][$miech][$typ_gs]['accounts_type']['total'])){ $generate_table_array[$rok][$miech][$typ_gs]['accounts_type']['total'] = 0; } $generate_table_array[$rok][$miech][$typ_gs]['accounts_type']['total']+=$sum_data; } } } } }//koniec glownego foreacha $smarty = new Sugar_Smarty (); // Variables for Smarty (tpl) $smarty->assign("MOD", $mod_strings); $smarty->assign("APP_LIST_STRINGS", $app_list_strings); $smarty->assign("table_array", $generate_table_array); //print_r($generate_table_array); $req=$_REQUEST['types_group']; $req[]='suma'; $req_prod=$_REQUEST['product_group']; $req_prod[]='total'; $smarty->assign("list_types", $types); $smarty->assign("list_group_ks", $group_ks); $smarty->assign("list_group_ks_without_filter", $group_ks_without_filter); $smarty->assign("list_other_group_ks", $other_group_ks); $smarty->assign('types_group_req',$req); $smarty->assign('types_prod_req',$req_prod); $smarty->assign("list_years", $years); $smarty->assign("list_months", $months); $smarty->assign("months", $array_months); $smarty->assign("stock_array", $stock_array); $_REQUEST['to_xls'] = isset($_REQUEST['to_xls']) ? $_REQUEST['to_xls'] : null; $_REQUEST['to_json'] = isset($_REQUEST['to_json']) ? $_REQUEST['to_json'] : null; $_REQUEST['to_pdf_gen'] = isset($_REQUEST['to_pdf_gen']) ? $_REQUEST['to_pdf_gen'] : null; $_REQUEST['to_chart'] = isset($_REQUEST['to_chart']) ? $_REQUEST['to_chart'] : null; // All pages if($_REQUEST['to_xls'] == '1') { xsl($group_ks, $array_months, $types, $generate_table_array); } elseif($_REQUEST['to_pdf_gen'] == '1') { pdf($smarty); } elseif($_REQUEST['to_json'] == '1') { //print_r($generate_table_array); chart_json($generate_table_array, $group_ks, $types,$req); } elseif($_REQUEST['to_chart'] == '1') { echo $smarty->display('modules/EcmReports/tpls/ReportSalesByGroupChart.tpl'); } else { echo $smarty->display('modules/EcmReports/tpls/ReportSalesByGroup.tpl'); }