662 lines
24 KiB
PHP
662 lines
24 KiB
PHP
<?php
|
|
if (! defined('sugarEntry') || ! sugarEntry)
|
|
die('Not A Valid Entry Point');
|
|
|
|
/*****************************************************/
|
|
/*********************** PREPARE *********************/
|
|
/*****************************************************/
|
|
$db = $GLOBALS['db'];
|
|
|
|
global $app_list_strings;
|
|
$all_groups_ks = $app_list_strings["ecmproducts_group_ks_dom"];
|
|
|
|
if ($_GET['selectUser'] != "") {
|
|
$selectUser = $_GET['selectUser'];
|
|
} else {
|
|
$selectUser = "";
|
|
}
|
|
|
|
if ($_GET['selectPdfType'] != "") {
|
|
$selectPdfType = $_GET['selectPdfType'];
|
|
} else {
|
|
$selectPdfType = "";
|
|
}
|
|
|
|
$data = array();
|
|
$categoryArray = array();
|
|
|
|
$sum = array();
|
|
$sumSub = array();
|
|
$sumSub2 = array();
|
|
$searchBy = $_GET['groupByProducentsOrProducts'];
|
|
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"];
|
|
|
|
$contractorName = $_GET['account_name'];
|
|
$contractorId = $_GET['account_id'];
|
|
$searchByType = $_GET['type'];
|
|
|
|
$group_ks = $_GET["group_ks"];
|
|
|
|
if ($group_ks == '')
|
|
$group_ks = "%";
|
|
|
|
$date_from_to_query = new DateTime($date_from);
|
|
$date_to_to_query = new DateTime($date_to);
|
|
|
|
$datausers = array();
|
|
$users = array();
|
|
$queryUsers = "SELECT
|
|
first_name as 'first',
|
|
last_name as 'last',
|
|
id
|
|
FROM users
|
|
where deleted= 0
|
|
and status = 'Active';";
|
|
$rowsUsers = $db->query($queryUsers);
|
|
while ($rowUser = $db->fetchByAssoc($rowsUsers)) {
|
|
$users["first"] = $rowUser["first"];
|
|
$users["last"] = $rowUser["last"];
|
|
$users["id"] = $rowUser["id"];
|
|
$datausers[] = $users;
|
|
}
|
|
|
|
if ($searchBy == "contractor") {
|
|
$groupBy = "name";
|
|
} else {
|
|
$groupBy = "id";
|
|
}
|
|
|
|
if ($searchBy == "product") {
|
|
$query = "SELECT
|
|
pozycja.name,
|
|
pozycja.ecmproduct_id as 'id',
|
|
faktura.parent_id as 'parent_id',
|
|
produkt.code as 'code',
|
|
faktura.type as 'type',
|
|
sum(
|
|
CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
CASE WHEN faktura.currency_value_nbp is null or faktura.currency_value_nbp='' or faktura.currency_value_nbp=0
|
|
THEN
|
|
pozycja.total_netto
|
|
ELSE
|
|
pozycja.total_netto*faktura.currency_value_nbp
|
|
END
|
|
ELSE
|
|
CASE WHEN pozycja.old_ecminvoiceoutitem_id IS null OR pozycja.old_ecminvoiceoutitem_id='' THEN
|
|
0
|
|
ELSE
|
|
CASE WHEN faktura.currency_value_nbp is null or faktura.currency_value_nbp='' or faktura.currency_value_nbp=0
|
|
THEN
|
|
pozycja.total_netto-pozycja.old_total_netto
|
|
ELSE
|
|
(pozycja.total_netto-pozycja.old_total_netto)*faktura.currency_value_nbp
|
|
END
|
|
END
|
|
|
|
END
|
|
) as netto,
|
|
sum(
|
|
CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
pozycja.quantity
|
|
ELSE
|
|
pozycja.quantity_corrected
|
|
END
|
|
) as ilosc,";
|
|
if ($reportSales === 1) {
|
|
|
|
$query .= " sum( CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
produkt.cena_produkcyjna*pozycja.quantity
|
|
ELSE
|
|
produkt.cena_produkcyjna*pozycja.quantity_corrected
|
|
END
|
|
) as koszt";
|
|
} else {
|
|
|
|
$query .= "
|
|
sum(
|
|
CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
pozycja.price_purchase*pozycja.quantity
|
|
ELSE
|
|
pozycja.price_purchase*pozycja.quantity_corrected
|
|
END
|
|
) as koszt";
|
|
}
|
|
$query .= " FROM
|
|
ecminvoiceoutitems pozycja
|
|
JOIN
|
|
ecminvoiceouts faktura ON pozycja.ecminvoiceout_id = faktura.id
|
|
LEFT JOIN
|
|
ecmproducts produkt ON pozycja.ecmproduct_id = produkt.id
|
|
WHERE
|
|
faktura.register_date BETWEEN
|
|
'" . $date_from_to_query->format('Y-m-d') . "' AND
|
|
'" . $date_to_to_query->format('Y-m-d') . "'
|
|
and faktura.type like '" . $searchByType . "'
|
|
and faktura.canceled = 0
|
|
and faktura.deleted= 0";
|
|
if ($selectPdfType != "")
|
|
$query .= " and faktura.pdf_type='$selectPdfType'";
|
|
$query .= " and pozycja.deleted= 0 ";
|
|
|
|
if ($group_ks != '%') {
|
|
$query .= "AND produkt.group_ks LIKE '$group_ks'";
|
|
}
|
|
$query .= "GROUP BY pozycja.id
|
|
COLLATE utf8_polish_ci;";
|
|
} else if ($searchBy == "contractor") {
|
|
$query = "SELECT
|
|
faktura.parent_name as 'name',
|
|
faktura.parent_id as 'parent_id',
|
|
pozycja.name as 'product_name',
|
|
pozycja.ecmproduct_id as 'id',
|
|
faktura.type as 'type',
|
|
acco.parent_id as 'parent2',
|
|
faktura.parent_name as 'parent',
|
|
sum(
|
|
CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
CASE WHEN faktura.currency_value_nbp is null or faktura.currency_value_nbp='' or faktura.currency_value_nbp=0
|
|
THEN
|
|
pozycja.total_netto
|
|
ELSE
|
|
pozycja.total_netto*faktura.currency_value_nbp
|
|
END
|
|
ELSE
|
|
CASE WHEN faktura.currency_value_nbp is null or faktura.currency_value_nbp='' or faktura.currency_value_nbp=0
|
|
THEN
|
|
pozycja.total_netto_corrected
|
|
ELSE
|
|
pozycja.total_netto_corrected * faktura.currency_value_nbp
|
|
END
|
|
|
|
END
|
|
) as netto,
|
|
sum(
|
|
CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
pozycja.quantity
|
|
ELSE
|
|
pozycja.quantity_corrected
|
|
END
|
|
) as ilosc,";
|
|
|
|
if ($reportSales === 1) {
|
|
|
|
$query .= " sum( CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
produkt.cena_produkcyjna*pozycja.quantity
|
|
ELSE
|
|
0
|
|
END
|
|
) as koszt";
|
|
} else {
|
|
|
|
$query .= "
|
|
sum(
|
|
CASE WHEN faktura.type!='correct'
|
|
THEN
|
|
pozycja.price_purchase*pozycja.quantity
|
|
ELSE
|
|
0
|
|
END
|
|
) as koszt";
|
|
}
|
|
$query .= " FROM
|
|
ecminvoiceoutitems pozycja
|
|
JOIN
|
|
ecminvoiceouts faktura ON pozycja.ecminvoiceout_id = faktura.id
|
|
LEFT JOIN
|
|
ecmproducts produkt ON pozycja.ecmproduct_id = produkt.id
|
|
JOIN
|
|
accounts acco ON acco.id = faktura.parent_id
|
|
WHERE
|
|
faktura.register_date BETWEEN
|
|
'" . $date_from_to_query->format('Y-m-d') . "' AND
|
|
'" . $date_to_to_query->format('Y-m-d') . "'
|
|
and faktura.type like '" . $searchByType . "'
|
|
and faktura.canceled = 0
|
|
and faktura.deleted= 0";
|
|
if ($selectPdfType != "")
|
|
$query .= " and faktura.pdf_type='$selectPdfType'";
|
|
$query .= " and pozycja.deleted= 0
|
|
and produkt.group_ks LIKE '$group_ks'";
|
|
|
|
$query .= "GROUP BY pozycja.id
|
|
COLLATE utf8_polish_ci;";
|
|
}
|
|
|
|
//echo $query;
|
|
|
|
|
|
/*****************************************************/
|
|
/*************** GET DATA FROM DB*********************/
|
|
/*****************************************************/
|
|
$rows = $db->query($query);
|
|
// prepare data for Smarty
|
|
while ($r = $db->fetchByAssoc($rows)) {
|
|
$row = prepareRow($r, $selectUser, $searchBy);
|
|
if ($row != null) {
|
|
$data[] = $row;
|
|
}
|
|
}
|
|
|
|
if (1 == 1) {
|
|
// E-Commerce data
|
|
$ecommercerows = getEcommerceData($date_from_to_query, $date_to_to_query, 'allegro', $searchByType, $searchBy);
|
|
foreach ($ecommercerows as $r) {
|
|
$row = prepareRow($r, $selectUser, $group_media_saturn_holding);
|
|
if ($row) {
|
|
$data[] = $row;
|
|
}
|
|
}
|
|
$ecommercerows = getEcommerceData($date_from_to_query, $date_to_to_query, 'shop', $searchByType, $searchBy);
|
|
foreach ($ecommercerows as $r) {
|
|
$row = prepareRow($r, $selectUser, $group_media_saturn_holding);
|
|
if ($row) {
|
|
$data[] = $row;
|
|
}
|
|
}
|
|
}
|
|
if ($searchBy != "") {
|
|
////////////////// SUM /////////////////////////////////
|
|
foreach ($data as $key => &$element) {
|
|
if ($element["netto"] != 0) {
|
|
$categoryArray[$element["kategoria"] == "" ? "Inne" : $element["kategoria"]][$element["podkategoria"] == "" ? "Reszta" : $element["podkategoria"]][$key] = $element;
|
|
} else {
|
|
//echo "Nie przechodzi: <br>";
|
|
//print_r( $element );
|
|
}
|
|
}
|
|
|
|
foreach ($categoryArray as $key => &$element) {
|
|
foreach ($element as $keyy => &$elementt) {
|
|
foreach ($elementt as $keyyy => &$elementtt) {
|
|
$sumSub["IloscSum"][$key] += $elementtt["ilosc"];
|
|
$sumSub["SoldSum"][$key] += $elementtt["netto"];
|
|
//if($elementtt["type"]=="normal")
|
|
//{
|
|
$sumSub["SoldSumNormal"][$key] += $elementtt["netto"];
|
|
$sumSub["IloscNormal"][$key] += $elementtt["ilosc"];
|
|
//}else{
|
|
// $sumSub["SoldSumNormal"][$key] += 0;
|
|
//$sumSub["IloscNormal"][$key] += 0;
|
|
// }
|
|
$sumSub["KosztSum"][$key] += $elementtt["koszt"];
|
|
|
|
$sumSub2["IloscSum"][$key][$keyy] += $elementtt["ilosc"];
|
|
$sumSub2["SoldSum"][$key][$keyy] += $elementtt["netto"];
|
|
//if($elementtt["type"]=="normal")
|
|
//{
|
|
$sumSub2["SoldSumNormal"][$key][$keyy] += $elementtt["netto"];
|
|
$sumSub2["IloscNormal"][$key][$keyy] += $elementtt["ilosc"];
|
|
//}else{
|
|
// $sumSub2["SoldSumNormal"][$key][$keyy] += 0;
|
|
// $sumSub2["IloscNormal"][$key][$keyy] += 0;
|
|
//}
|
|
$sumSub2["KosztSum"][$key][$keyy] += $elementtt["koszt"];
|
|
}
|
|
$categoryArray[$key][$keyy]["IloscSum2"] = $sumSub2["IloscSum"][$key][$keyy];
|
|
$categoryArray[$key][$keyy]["SoldSum2"] = $sumSub2["SoldSum"][$key][$keyy];
|
|
$categoryArray[$key][$keyy]["SoldSumNormal2"] = $sumSub2["SoldSumNormal"][$key][$keyy];
|
|
$categoryArray[$key][$keyy]["IloscNormal2"] = $sumSub2["IloscNormal"][$key][$keyy];
|
|
$categoryArray[$key][$keyy]["KosztSum2"] = $sumSub2["KosztSum"][$key][$keyy];
|
|
}
|
|
$categoryArray[$key]["IloscSum"] = $sumSub["IloscSum"][$key];
|
|
$categoryArray[$key]["SoldSum"] = $sumSub["SoldSum"][$key];
|
|
$categoryArray[$key]["SoldSumNormal"] = $sumSub["SoldSumNormal"][$key];
|
|
$categoryArray[$key]["IloscNormal"] = $sumSub["IloscNormal"][$key];
|
|
$categoryArray[$key]["KosztSum"] = $sumSub["KosztSum"][$key];
|
|
}
|
|
|
|
foreach ($categoryArray as $key => &$element) {
|
|
$sum["IloscSumSum"] += $sumSub["IloscSum"][$key];
|
|
$sum["SoldSumSum"] += $sumSub["SoldSum"][$key];
|
|
$sum["SoldSumSumNormal"] += $sumSub["SoldSumNormal"][$key];
|
|
$sum["IloscNormal"] += $sumSub["IloscNormal"][$key];
|
|
$sum["KosztSumSum"] += $sumSub["KosztSum"][$key];
|
|
}
|
|
|
|
$sum["SredniaSumSum"] = $sum["SoldSumSumNormal"] / $sum["IloscNormal"];
|
|
$sum["MarzaSumSum"] = ($sum["SoldSumSumNormal"] - $sum["KosztSumSum"]) / $sum["SoldSumSumNormal"] * 100;
|
|
|
|
|
|
|
|
function cmp($a, $b)
|
|
{
|
|
if ($a['name'] == $b['name']) {
|
|
return 0;
|
|
}
|
|
return ($a['name'] < $b['name']) ? -1 : 1;
|
|
}
|
|
|
|
function cmp2($a, $b)
|
|
{
|
|
if ($a['id'] == $b['id']) {
|
|
return 0;
|
|
}
|
|
return ($a['id'] < $b['id']) ? -1 : 1;
|
|
}
|
|
|
|
// grupowanie po kontrahentach
|
|
foreach ($categoryArray as $key1 => &$element1) {
|
|
foreach ($element1 as $key2 => &$element2) {
|
|
$tmp2[$key1][$key2]["IloscSum2"] = $categoryArray[$key1][$key2]["IloscSum2"];
|
|
$tmp2[$key1][$key2]["SoldSum2"] = $categoryArray[$key1][$key2]["SoldSum2"];
|
|
$tmp2[$key1][$key2]["SoldSumNormal2"] = $categoryArray[$key1][$key2]["SoldSumNormal2"];
|
|
$tmp2[$key1][$key2]["IloscNormal2"] = $categoryArray[$key1][$key2]["IloscNormal2"];
|
|
$tmp2[$key1][$key2]["KosztSum2"] = $categoryArray[$key1][$key2]["KosztSum2"];
|
|
|
|
if ($searchBy == "contractor") {
|
|
usort($element2, "cmp");
|
|
} else {
|
|
usort($element2, "cmp2");
|
|
}
|
|
$i = 0;
|
|
$tmp2[$key1][$key2][0] = array('name' => null);
|
|
foreach ($element2 as $count => &$element3) {
|
|
if ($element3[$groupBy] != $tmp2[$key1][$key2][$i][$groupBy]) {
|
|
if ($tmp2[$key1][$key2][$i][$groupBy] != null) {
|
|
$i++;
|
|
}
|
|
$tmp2[$key1][$key2][$i]["id"] = $element3["id"];
|
|
$tmp2[$key1][$key2][$i]["name"] = $element3["name"];
|
|
$tmp2[$key1][$key2][$i]["code"] = $element3["code"];
|
|
$tmp2[$key1][$key2][$i]["parent_id"] = $element3["parent_id"];
|
|
}
|
|
//if($element3["type"]=="normal")
|
|
//{
|
|
$tmp2[$key1][$key2][$i]["nettoNormal"] += $element3["netto"];
|
|
$tmp2[$key1][$key2][$i]["IloscNormal"] += $element3["ilosc"];
|
|
//}
|
|
$tmp2[$key1][$key2][$i]["ilosc"] += $element3["ilosc"];
|
|
$tmp2[$key1][$key2][$i]["netto"] += $element3["netto"];
|
|
$tmp2[$key1][$key2][$i]["koszt"] += $element3["koszt"];
|
|
}
|
|
$tmp2[$key1]["IloscSum"] = $categoryArray[$key1]["IloscSum"];
|
|
$tmp2[$key1]["SoldSum"] = $categoryArray[$key1]["SoldSum"];
|
|
$tmp2[$key1]["SoldSumNormal"] = $categoryArray[$key1]["SoldSumNormal"];
|
|
$tmp2[$key1]["IloscNormal"] = $categoryArray[$key1]["IloscNormal"];
|
|
$tmp2[$key1]["KosztSum"] = $categoryArray[$key1]["KosztSum"];
|
|
|
|
|
|
$sumSub2["MarzaSum"][$key1][$key2] = ($tmp2[$key1][$key2]["SoldSumNormal2"] - $tmp2[$key1][$key2]["KosztSum2"]) / $tmp2[$key1][$key2]["SoldSumNormal2"] * 100;
|
|
$sumSub2["SredniaSum"][$key1][$key2] = $tmp2[$key1][$key2]["SoldSumNormal2"] / $tmp2[$key1][$key2]["IloscNormal2"];
|
|
if ($key2 == "Reszta") {
|
|
if (is_array($sumSub2["SredniaSum"][$key1][$key2]) || $sumSub2["SredniaSum"][$key1][$key2] == '') {
|
|
$sumSub2["SredniaSum"][$key1][$key2] = 0;
|
|
}
|
|
}
|
|
$count1++;
|
|
|
|
$tmp2[$key1][$key2]["SredniaSum2"] = $sumSub2["SredniaSum"][$key1][$key2];
|
|
$tmp2[$key1][$key2]["MarzaSum2"] = $sumSub2["MarzaSum"][$key1][$key2];
|
|
}
|
|
$sumSub["MarzaSum"][$key1] = ($tmp2[$key1]["SoldSumNormal"] - $tmp2[$key1]["KosztSum"]) / $tmp2[$key1]["SoldSumNormal"] * 100;
|
|
$sumSub["SredniaSum"][$key1] = $tmp2[$key1]["SoldSumNormal"] / $tmp2[$key1]["IloscNormal"];
|
|
|
|
$tmp2[$key1]["SredniaSum"] = $sumSub["SredniaSum"][$key1];
|
|
$tmp2[$key1]["MarzaSum"] = $sumSub["MarzaSum"][$key1];
|
|
$categoryArray1 = $tmp2;
|
|
}
|
|
|
|
////////////////// SORT sumSub /////////////////////////////////
|
|
foreach ($categoryArray1 as $key1 => &$element) {
|
|
foreach ($element as $key2 => &$elements) {
|
|
foreach ($element as $key3 => &$element2) {
|
|
if ($sumSub2["SoldSum"][$key1][$key2] > $sumSub2["SoldSum"][$key1][$key3]) {
|
|
$tmp = $sumSub2["SoldSum"][$key1][$key2];
|
|
$sumSub2["SoldSum"][$key1][$key2] = $sumSub2["SoldSum"][$key1][$key3];
|
|
$sumSub2["SoldSum"][$key1][$key3] = $tmp;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
foreach ($sumSub["SoldSum"] as $key1 => &$element) {
|
|
foreach ($sumSub["SoldSum"] as $key2 => &$element2) {
|
|
if ($sumSub["SoldSum"][$key1] > $sumSub["SoldSum"][$key2]) {
|
|
$tmp = $sumSub["SoldSum"][$key1];
|
|
$sumSub["SoldSum"][$key1] = $sumSub["SoldSum"][$key2];
|
|
$sumSub["SoldSum"][$key2] = $tmp;
|
|
}
|
|
}
|
|
}
|
|
////////////////// SORT array /////////////////////////////////
|
|
$newArray2;
|
|
foreach ($sumSub["SoldSum"] as $key1 => &$element1) {
|
|
foreach ($categoryArray1 as $key2 => &$element2) {
|
|
if ($sumSub["SoldSum"][$key1] == $categoryArray1[$key2]["SoldSum"]) {
|
|
$newArray2[$key2] = $categoryArray1[$key2];
|
|
}
|
|
}
|
|
}
|
|
$newArray1;
|
|
foreach ($newArray2 as $key1 => &$element1) {
|
|
foreach ($element1 as $key2 => &$element2) {
|
|
foreach ($element1 as $key3 => &$element3) {
|
|
if ($sumSub2["SoldSum"][$key1][$key2] == $newArray2[$key1][$key3]["SoldSum2"]) {
|
|
$newArray1[$key1][$key3] = $newArray2[$key1][$key3];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//wyliczanie dokładne marży i średniej dla produktów
|
|
foreach ($newArray1 as $key1 => &$element1) {
|
|
foreach ($element1 as $key2 => &$element2) {
|
|
foreach ($element2 as $key3 => &$element3) {
|
|
$newArray1[$key1][$key2][$key3]["marza"] = ($newArray1[$key1][$key2][$key3]["nettoNormal"] - $newArray1[$key1][$key2][$key3]["koszt"]) / $newArray1[$key1][$key2][$key3]["nettoNormal"] * 100;
|
|
$newArray1[$key1][$key2][$key3]["srednia"] = $newArray1[$key1][$key2][$key3]["nettoNormal"] / $newArray1[$key1][$key2][$key3]["IloscNormal"];
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function prepareRow($r, $selectUser, $searchBy)
|
|
{
|
|
$db = $GLOBALS['db'];
|
|
$row = array();
|
|
$row["id"] = $r["id"];
|
|
if ($r["parent2"] == 1249)
|
|
$row["name"] = "Media Saturn Holding";
|
|
else
|
|
$row["name"] = $r["name"];
|
|
|
|
$row["code"] = $r["code"];
|
|
$row["parent_id"] = $r["parent_id"];
|
|
$row["type"] = $r["type"];
|
|
|
|
$userBool = 1;
|
|
if ($selectUser != "") {
|
|
$userBool = 0;
|
|
$querySelectUsers = "SELECT user.id,
|
|
first_name as 'first',
|
|
last_name as 'last'
|
|
FROM
|
|
accounts acc
|
|
JOIN
|
|
users user ON acc.assigned_user_id=user.id
|
|
WHERE acc.id='" . $r["parent_id"] . "';";
|
|
$rowsSelectUsers = $db->query($querySelectUsers);
|
|
while ($rowSelectUser = $db->fetchByAssoc($rowsSelectUsers)) {
|
|
if ($rowSelectUser["id"] == $selectUser) {
|
|
$userBool = 1;
|
|
} else {
|
|
$userBool = 0;
|
|
}
|
|
}
|
|
}
|
|
|
|
if ($userBool == 1) {
|
|
if ($searchBy == "contractor") {
|
|
$row["product_name"] = $r["product_name"];
|
|
} else {
|
|
$row["product_name"] = $r["name"];
|
|
}
|
|
|
|
|
|
$querySubCategory = "SELECT category.name as 'podkategoria'
|
|
FROM
|
|
ecmproductcategories_bean bean
|
|
JOIN
|
|
ecmproductcategories category ON bean.ecmproductcategory_id = category.id
|
|
WHERE bean.bean_id='" . $row["id"] . "'
|
|
and bean.position = '1'
|
|
and bean.deleted = '0'
|
|
and category.deleted = '0';";
|
|
|
|
$rowsSubCategory = $db->query($querySubCategory);
|
|
while ($rowSubCategory = $db->fetchByAssoc($rowsSubCategory)) {
|
|
$row["podkategoria"] = $rowSubCategory["podkategoria"];
|
|
}
|
|
|
|
$queryCategory = "SELECT category.name as 'kategoria'
|
|
FROM
|
|
ecmproductcategories_bean bean
|
|
JOIN
|
|
ecmproductcategories category ON bean.ecmproductcategory_id = category.id
|
|
WHERE bean.bean_id='" . $row["id"] . "'
|
|
and bean.position = '0'
|
|
and bean.deleted = '0'
|
|
and category.deleted = '0';";
|
|
|
|
$rowscategory = $db->query($queryCategory);
|
|
while ($rowcategory = $db->fetchByAssoc($rowscategory)) {
|
|
|
|
$row["kategoria"] = $rowcategory["kategoria"];
|
|
}
|
|
$row["ilosc"] = $r["ilosc"];
|
|
$row["netto"] = $r["netto"];
|
|
$row["srednia"] = $row["netto"] / $row["ilosc"];
|
|
$row["koszt"] = $r["koszt"];
|
|
//if($row["netto"]>$row["koszt"])
|
|
//{
|
|
$row["marza"] = ($row["netto"] - $row["koszt"]) / ($row["netto"]) * 100;
|
|
//}else{
|
|
//$row["marza"] = 0;
|
|
//}
|
|
|
|
return $row;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
function getEcommerceData($date_from_to_query, $date_to_to_query, $type, $inv_type, $searchBy)
|
|
{
|
|
$db = $GLOBALS['db'];
|
|
$data = [];
|
|
if ($inv_type == 'correct') {
|
|
$inv_type = 'correcting';
|
|
}
|
|
if ($searchBy == 'product') {
|
|
$query = "
|
|
SELECT
|
|
ip.ecmproduct_id AS id,
|
|
p.name,
|
|
p.code,
|
|
SUM(CASE WHEN i.type ='normal'
|
|
THEN
|
|
ip.price_netto * ip.quantity
|
|
ELSE
|
|
(ip.price_netto * ip.quantity) - (ipc.price_netto * ipc.quantity)
|
|
END) AS netto,
|
|
SUM(CASE WHEN i.type ='normal'
|
|
THEN
|
|
ip.quantity
|
|
ELSE
|
|
ip.quantity - ipc.quantity
|
|
END) AS ilosc
|
|
FROM
|
|
ecommerce_invoices_products AS ip
|
|
INNER JOIN
|
|
ecmproducts AS p ON p.id = ip.ecmproduct_id
|
|
INNER JOIN
|
|
ecommerce_invoices AS i ON i.id = ip.invoice_id
|
|
LEFT JOIN
|
|
ecommerce_invoices_products AS ipc ON ipc.invoice_id = i.corrected_invoice_id AND ipc.ecmproduct_id = ip.ecmproduct_id
|
|
WHERE
|
|
i.register_date BETWEEN
|
|
'" . $date_from_to_query->format('Y-m-d') . "' AND
|
|
'" . $date_to_to_query->format('Y-m-d') . "' AND
|
|
i.origin = '$type' AND
|
|
i.type LIKE '$inv_type'
|
|
GROUP BY ip.ecmproduct_id";
|
|
} else {
|
|
if ($type == 'allegro') {
|
|
$parentName = 'Allegro';
|
|
} else {
|
|
$parentName = 'ABC-Czystosci.pl';
|
|
}
|
|
$query = "
|
|
SELECT
|
|
ip.ecmproduct_id AS id,
|
|
p.name AS product_name,
|
|
'$parentName' AS name,
|
|
p.code,
|
|
SUM(CASE WHEN i.type ='normal'
|
|
THEN
|
|
ip.price_netto * ip.quantity
|
|
ELSE
|
|
(ip.price_netto * ip.quantity) - (ipc.price_netto * ipc.quantity)
|
|
END) AS netto,
|
|
SUM(CASE WHEN i.type ='normal'
|
|
THEN
|
|
ip.quantity
|
|
ELSE
|
|
ip.quantity - ipc.quantity
|
|
END) AS ilosc
|
|
FROM
|
|
ecommerce_invoices_products AS ip
|
|
INNER JOIN
|
|
ecmproducts AS p ON p.id = ip.ecmproduct_id
|
|
INNER JOIN
|
|
ecommerce_invoices AS i ON i.id = ip.invoice_id
|
|
LEFT JOIN
|
|
ecommerce_invoices_products AS ipc ON ipc.invoice_id = i.corrected_invoice_id AND ipc.ecmproduct_id = ip.ecmproduct_id
|
|
WHERE
|
|
i.register_date BETWEEN
|
|
'" . $date_from_to_query->format('Y-m-d') . "' AND
|
|
'" . $date_to_to_query->format('Y-m-d') . "' AND
|
|
i.origin = '$type' AND
|
|
i.type LIKE '$inv_type'
|
|
GROUP BY ip.ecmproduct_id";
|
|
}
|
|
|
|
$rows = $db->query($query);
|
|
while ($r = $db->fetchByAssoc($rows)) {
|
|
if ($type == 'allegro') {
|
|
$r['parent'] = "Allegro";
|
|
$r['parent_id'] = "allegro";
|
|
$r['contructor_id'] = "allegro";
|
|
} else if ($type == 'shop') {
|
|
$r['parent'] = "ABC-Czystosci.pl";
|
|
$r['parent_id'] = "abc-czystosci.pl";
|
|
$r['contructor_id'] = "abc-czystosci.pl";
|
|
}
|
|
$q = "
|
|
SELECT AVG(i.price) AS sell_price
|
|
FROM ecmstockdocoutitems AS i
|
|
INNER JOIN ecmstockdocouts AS o ON i.ecmstockdocout_id = o.id
|
|
WHERE i.ecmproduct_id = '{$r['id']}' AND o.delivery_date BETWEEN '{$date_from_to_query->format('Y-m-d')}' AND '{$date_to_to_query->format('Y-m-d')}'
|
|
AND o.parent_id = 'b5612f7f-85e5-f930-293e-62cead14b424'
|
|
";
|
|
$price = $db->query($q);
|
|
$price = $db->fetchByAssoc($price);
|
|
$r['koszt'] = $price['sell_price'] * $r['ilosc'];
|
|
$data[] = $r;
|
|
}
|
|
return $data;
|
|
}
|