Files
crm.e5.pl/modules/EcmProducts/calculateSellInfo.php
2024-04-27 09:23:34 +02:00

676 lines
17 KiB
PHP

<?php
$db = new mysqli('localhost', 'root', '5z#JaL', 'crm');
$products = $db->query("SELECT id,code FROM ecmproducts WHERE deleted='0' AND product_active='1'");
$i = 0;
while ($p = $products->fetch_object()) {
$i++;
echo $i.': '.$p->code.PHP_EOL;
//last year
$lyr = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y")-1)."'
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
GROUP BY ii.ecmproduct_id
");
$ly = $lyr->fetch_object();
//update
$margin = 0;
if ($ly->sales > 0)
$margin = (($ly->sales - $ly->cost) / $ly->sales)*100;
$db->query("UPDATE ecmproducts SET last_year_margin='$margin', last_year_qty='".$ly->qty."', last_year_val='".$ly->sales."', last_year_cost='".$ly->cost."' WHERE id='".$p->id."'");
//this year sale
$tyr = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
ii.quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y"))."'
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$ty = $tyr->fetch_object();
//update
$margin = 0;
if ($ty->sales > 0)
$margin = (($ty->sales - $ty->cost) / $ty->sales)*100;
$db->query("UPDATE ecmproducts SET this_year_margin='$margin', this_year_qty='".$ty->qty."', this_year_val='".$ty->sales."', this_year_cost='".$ty->cost."' WHERE id='".$p->id."'");
//q1
$q1r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y"))."'
AND MONTH(i.register_date) IN ('1', '2', '3')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$q1 = $q1r->fetch_object();
//update
$margin = 0;
if ($q1->sales > 0)
$margin = (($q1->sales - $q1->cost) / $q1->sales)*100;
$db->query("UPDATE ecmproducts SET q1_margin='$margin', q1_qty='".$q1->qty."', q1_val='".$q1->sales."', q1_cost='".$q1->cost."' WHERE id='".$p->id."'");
//q2
$q2r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y"))."'
AND MONTH(i.register_date) IN ('4', '5', '6')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$q2 = $q2r->fetch_object();
//update
$margin = 0;
if ($q2->sales > 0)
$margin = (($q2->sales - $q2->cost) / $q2->sales)*100;
$db->query("UPDATE ecmproducts SET q2_margin='$margin', q2_qty='".$q2->qty."', q2_val='".$q2->sales."', q2_cost='".$q2->cost."' WHERE id='".$p->id."'");
//q3
$q3r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y"))."'
AND MONTH(i.register_date) IN ('7', '8', '9')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$q3 = $q3r->fetch_object();
//update
$margin = 0;
if ($q3->sales > 0)
$margin = (($q3->sales - $q3->cost) / $q3->sales)*100;
$db->query("UPDATE ecmproducts SET q3_margin='$margin', q3_qty='".$q3->qty."', q3_val='".$q3->sales."', q3_cost='".$q3->cost."' WHERE id='".$p->id."'");
//q4
$q4r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y"))."'
AND MONTH(i.register_date) IN ('10', '11', '12')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$q4 = $q4r->fetch_object();
//update
$margin = 0;
if ($q4->sales > 0)
$margin = (($q4->sales - $q4->cost) / $q4->sales)*100;
$db->query("UPDATE ecmproducts SET q4_margin='$margin', q4_qty='".$q4->qty."', q4_val='".$q4->sales."', q4_cost='".$q4->cost."' WHERE id='".$p->id."'");
//this month
$tmr = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y"))."'
AND MONTH(i.register_date) = '".(date('m'))."'
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$tm = $tmr->fetch_object();
//update
$margin = 0;
if ($tm->sales > 0)
$margin = (($tm->sales - $tm->cost) / $tm->sales)*100;
$db->query("UPDATE ecmproducts SET this_month_margin='$margin', this_month_qty='".$tm->qty."', this_month_val='".$tm->sales."', this_month_cost='".$tm->cost."' WHERE id='".$p->id."'");
//last month
$last_month = date("m")-1;
if ($last_month == 0) $last_month=12;
$lmr = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y"))."'
AND MONTH(i.register_date) = '$last_month'
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$lm = $lmr->fetch_object();
//update
$margin=0;
if ($lm->cost>0)
$margin = (($lm->sales - $lm->cost) / $lm->sales);
$db->query("UPDATE ecmproducts SET last_month_margin = '$margin', last_month_qty='".$lm->qty."', last_month_val='".$lm->sales."', last_month_cost='".$lm->cost."' WHERE id='".$p->id."'");
//laaast
//q1
$last_q1r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y")-1)."'
AND MONTH(i.register_date) IN ('1', '2', '3')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$last_q1 = $last_q1r->fetch_object();
//update
$margin = 0;
if ($last_q1->sales > 0)
$margin = (($last_q1->sales - $last_q1->cost) / $last_q1->sales)*100;
$db->query("UPDATE ecmproducts SET last_q1_margin='$margin', last_q1_qty='".$last_q1->qty."', last_q1_val='".$last_q1->sales."', last_q1_cost='".$last_q1->cost."' WHERE id='".$p->id."'");
//last_q2
$last_q2r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y")-1)."'
AND MONTH(i.register_date) IN ('4', '5', '6')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$last_q2 = $last_q2r->fetch_object();
//update
$margin = 0;
if ($last_q2->sales > 0)
$margin = (($last_q2->sales - $last_q2->cost) / $last_q2->sales)*100;
$db->query("UPDATE ecmproducts SET last_q2_margin='$margin', last_q2_qty='".$last_q2->qty."', last_q2_val='".$last_q2->sales."', last_q2_cost='".$last_q2->cost."' WHERE id='".$p->id."'");
//last_q3
$last_q3r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y")-1)."'
AND MONTH(i.register_date) IN ('7', '8', '9')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$last_q3 = $last_q3r->fetch_object();
//update
$margin = 0;
if ($last_q3->sales > 0)
$margin = (($last_q3->sales - $last_q3->cost) / $last_q3->sales)*100;
$db->query("UPDATE ecmproducts SET last_q3_margin='$margin', last_q3_qty='".$last_q3->qty."', last_q3_val='".$last_q3->sales."', last_q3_cost='".$last_q3->cost."' WHERE id='".$p->id."'");
//last_q4
$last_q4r = $db->query("
SELECT
sum(
CASE WHEN i.type!='correct'
THEN
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto
ELSE
ii.total_netto*i.currency_value
END
ELSE
CASE WHEN i.currency_value is null or i.currency_value='' or i.currency_value=0
THEN
ii.total_netto-ii.old_total_netto
ELSE
(ii.total_netto-ii.old_total_netto)*i.currency_value
END
END
) as sales,
sum(
CASE WHEN i.type!='correct'
THEN
ii.quantity
ELSE
quantity_corrected
END
) as qty,
sum(
CASE WHEN i.type!='correct'
THEN
ii.price_purchase*quantity
ELSE
ii.price_purchase*quantity_corrected
END
) as cost
FROM ecminvoiceoutitems AS ii
INNER JOIN ecminvoiceouts AS i
ON i.id=ii.ecminvoiceout_id
WHERE
YEAR(i.register_date) = '".(date("Y")-1)."'
AND MONTH(i.register_date) IN ('10', '11', '12')
AND i.deleted=0
AND i.canceled=0
AND ii.deleted='0'
AND ii.ecmproduct_id = '".$p->id."'
");
$last_q4 = $last_q4r->fetch_object();
//update
$margin = 0;
if ($last_q4->sales > 0)
$margin = (($last_q4->sales - $last_q4->cost) / $last_q4->sales)*100;
$db->query("UPDATE ecmproducts SET last_q4_margin='$margin', last_q4_qty='".$last_q4->qty."', last_q4_val='".$last_q4->sales."', last_q4_cost='".$last_q4->cost."' WHERE id='".$p->id."'");
}
?>