// Refine dashboard net profits

This commit is contained in:
Damien Metzger
2013-10-22 15:16:22 +02:00
parent fea7cd5983
commit 8ef9e71966
2 changed files with 138 additions and 134 deletions
+120 -48
View File
@@ -26,40 +26,41 @@
class AdminStatsControllerCore extends AdminStatsTabController class AdminStatsControllerCore extends AdminStatsTabController
{ {
public static function getUniqueVisitors($date_from, $date_to, $granularity = false) public static function getVisits($unique = false, $date_from, $date_to, $granularity = false)
{ {
$visitors = array(); $visits = array();
$gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false; $gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false;
if (Validate::isLoadedObject($gapi) && $gapi->isConfigured()) if (Validate::isLoadedObject($gapi) && $gapi->isConfigured())
{ {
if ($result = $gapi->requestReportData($granularity ? 'ga:date' : '', 'ga:visitors', $date_from, $date_to, null, null, 1, 30)) $metric = $unique ? 'visitors' : 'visits';
if ($result = $gapi->requestReportData($granularity ? 'ga:date' : '', 'ga:'.$metric, $date_from, $date_to, null, null, 1, 30))
foreach ($result as $row) foreach ($result as $row)
if ($granularity == 'day') if ($granularity == 'day')
$visitors[strtotime(preg_replace('/^([0-9]{4})([0-9]{2})([0-9]{2})$/', '$1-$2-$3', $row['dimensions']['date']))] = $row['metrics']['visitors']; $visits[strtotime(preg_replace('/^([0-9]{4})([0-9]{2})([0-9]{2})$/', '$1-$2-$3', $row['dimensions']['date']))] = $row['metrics'][$metric];
elseif ($granularity == false) elseif ($granularity == false)
$visitors = $row['metrics']['visitors']; $visits = $row['metrics'][$metric];
} }
else else
{ {
if ($granularity == 'day') if ($granularity == 'day')
{ {
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS(' $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT LEFT(`date_add`, 10) as date, COUNT(DISTINCT id_guest) as visitors SELECT LEFT(`date_add`, 10) as date, COUNT('.($unique ? 'DISTINCT id_guest' : '*').') as visits
FROM `'._DB_PREFIX_.'connections` FROM `'._DB_PREFIX_.'connections`
WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59"
'.Shop::addSqlRestriction().' '.Shop::addSqlRestriction().'
GROUP BY LEFT(`date_add`, 10)'); GROUP BY LEFT(`date_add`, 10)');
foreach ($result as $row) foreach ($result as $row)
$visitors[strtotime($row['date'])] = $row['visitors']; $visits[strtotime($row['date'])] = $row['visits'];
} }
else else
$visitors = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' $visits = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT COUNT(DISTINCT id_guest) as visitors SELECT COUNT('.($unique ? 'DISTINCT id_guest' : '*').') as visits
FROM `'._DB_PREFIX_.'connections` FROM `'._DB_PREFIX_.'connections`
WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59"
'.Shop::addSqlRestriction()); '.Shop::addSqlRestriction());
} }
return $visitors; return $visits;
} }
public static function getAbandonedCarts($date_from, $date_to) public static function getAbandonedCarts($date_from, $date_to)
@@ -144,13 +145,27 @@ class AdminStatsControllerCore extends AdminStatsTabController
WHERE product_shop.active = 0'); WHERE product_shop.active = 0');
} }
public static function getTotalSales($date_from, $date_to) public static function getTotalSales($date_from, $date_to, $granularity = false)
{ {
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' if ($granularity == 'day')
SELECT SUM(total_paid_tax_excl / o.conversion_rate) {
FROM `'._DB_PREFIX_.'orders` o $sales = array();
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59" $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
'.Shop::addSqlRestriction(false, 'o')); SELECT LEFT(`invoice_date`, 10) as date, SUM(total_paid_tax_excl / o.conversion_rate) as sales
FROM `'._DB_PREFIX_.'orders` o
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59"
'.Shop::addSqlRestriction(false, 'o').'
GROUP BY LEFT(`invoice_date`, 10)');
foreach ($result as $row)
$sales[strtotime($row['date'])] = $row['sales'];
return $sales;
}
else
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT SUM(total_paid_tax_excl / o.conversion_rate)
FROM `'._DB_PREFIX_.'orders` o
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59"
'.Shop::addSqlRestriction(false, 'o'));
} }
public static function get8020SalesCatalog($date_from, $date_to) public static function get8020SalesCatalog($date_from, $date_to)
@@ -203,6 +218,7 @@ class AdminStatsControllerCore extends AdminStatsTabController
GROUP BY LEFT(`invoice_date`, 10)'); GROUP BY LEFT(`invoice_date`, 10)');
foreach ($result as $row) foreach ($result as $row)
$orders[strtotime($row['date'])] = $row['orders']; $orders[strtotime($row['date'])] = $row['orders'];
return $orders;
} }
else else
$orders = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue(' $orders = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
@@ -322,21 +338,78 @@ class AdminStatsControllerCore extends AdminStatsTabController
return round($messages / $threads, 1); return round($messages / $threads, 1);
} }
public static function getExpenses($date_from, $date_to) public static function getPurchases($date_from, $date_to, $granularity = false)
{ {
$secs_per_month = 30.4375 * 86400; if ($granularity == 'day')
$total_secs = (strtotime($date_to) - min(strtotime($date_from), time())) / 86400; {
$expenses = $purchases = array();
Configuration::get('CONF_MONTHLY_ACOUNTING') $result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
+ Configuration::get('CONF_MONTHLY_DEVELOPMENT') SELECT
+ Configuration::get('CONF_MONTHLY_HOSTING') LEFT(`invoice_date`, 10) as date,
+ Configuration::get('CONF_MONTHLY_MARKETING') SUM(od.`product_quantity` * IF(
+ Configuration::get('CONF_MONTHLY_OTHERS') od.`purchase_supplier_price` > 0,
+ Configuration::get('CONF_MONTHLY_TOOLS'); od.`purchase_supplier_price` / `conversion_rate`,
$expenses *= $total_secs / $secs_per_month; od.`original_product_price` * '.(int)Configuration::get('CONF_AVERAGE_PRODUCT_MARGIN').' / 100
)) as total_purchase_price
FROM `'._DB_PREFIX_.'orders` o
LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59"
'.Shop::addSqlRestriction(false, 'o').'
GROUP BY LEFT(`invoice_date`, 10)');
foreach ($result as $row)
$purchases[strtotime($row['date'])] = $row['total_purchase_price'];
}
else
return Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT SUM(od.`product_quantity` * IF(
od.`purchase_supplier_price` > 0,
od.`purchase_supplier_price` / `conversion_rate`,
od.`original_product_price` * '.(int)Configuration::get('CONF_AVERAGE_PRODUCT_MARGIN').' / 100
)) as total_purchase_price
FROM `'._DB_PREFIX_.'orders` o
LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59"
'.Shop::addSqlRestriction(false, 'o'));
}
public static function getExpenses($date_from, $date_to, $granularity = false)
{
if ($granularity == 'day')
{
$expenses = array();
$from = strtotime($date_from.' 00:00:00');
$to = strtotime($date_to.' 23:59:59');
for ($date = $from; $date <= $to; $date = strtotime('+1 day', $date))
{
$expenses[$date] =
Configuration::get('CONF_MONTHLY_ACOUNTING')
+ Configuration::get('CONF_MONTHLY_DEVELOPMENT')
+ Configuration::get('CONF_MONTHLY_HOSTING')
+ Configuration::get('CONF_MONTHLY_MARKETING')
+ Configuration::get('CONF_MONTHLY_OTHERS')
+ Configuration::get('CONF_MONTHLY_TOOLS');
$expenses[$date] /= date('t', $date);
}
}
else
{
$secs_per_month = 30.4375 * 86400;
$total_secs = (strtotime($date_to) - min(strtotime($date_from), time())) / 86400;
$expenses =
Configuration::get('CONF_MONTHLY_ACOUNTING')
+ Configuration::get('CONF_MONTHLY_DEVELOPMENT')
+ Configuration::get('CONF_MONTHLY_HOSTING')
+ Configuration::get('CONF_MONTHLY_MARKETING')
+ Configuration::get('CONF_MONTHLY_OTHERS')
+ Configuration::get('CONF_MONTHLY_TOOLS');
$expenses *= $total_secs / $secs_per_month;
}
$orders = Db::getInstance()->ExecuteS(' $orders = Db::getInstance()->ExecuteS('
SELECT SELECT
`invoice_date`,
total_paid_tax_incl / o.conversion_rate as total_paid_tax_incl, total_paid_tax_incl / o.conversion_rate as total_paid_tax_incl,
total_shipping_tax_excl / o.conversion_rate as total_shipping_tax_excl, total_shipping_tax_excl / o.conversion_rate as total_shipping_tax_excl,
o.module, o.module,
@@ -351,24 +424,35 @@ class AdminStatsControllerCore extends AdminStatsTabController
foreach ($orders as $order) foreach ($orders as $order)
{ {
// Add flat fees for this order // Add flat fees for this order
$expenses += Configuration::get('CONF_ORDER_FIXED') + ( $flat_fees = Configuration::get('CONF_ORDER_FIXED') + (
$order['id_currency'] == Configuration::get('PS_DEFAULT_CURRENCY') $order['id_currency'] == Configuration::get('PS_DEFAULT_CURRENCY')
? Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED') ? Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED')
: Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED_FOREIGN') : Configuration::get('CONF_'.strtoupper($order['module']).'_FIXED_FOREIGN')
); );
// Add variable fees for this order // Add variable fees for this order
$expenses += $order['total_paid_tax_incl'] * ( $var_fees = $order['total_paid_tax_incl'] * (
$order['id_currency'] == Configuration::get('PS_DEFAULT_CURRENCY') $order['id_currency'] == Configuration::get('PS_DEFAULT_CURRENCY')
? Configuration::get('CONF_'.strtoupper($order['module']).'_VAR') ? Configuration::get('CONF_'.strtoupper($order['module']).'_VAR')
: Configuration::get('CONF_'.strtoupper($order['module']).'_VAR_FOREIGN') : Configuration::get('CONF_'.strtoupper($order['module']).'_VAR_FOREIGN')
) / 100; ) / 100;
// Add shipping fees for this order // Add shipping fees for this order
// $shipping_fees = $order['total_shipping_tax_excl'] * (
$expenses += $order['total_shipping_tax_excl'] * (
$order['id_country'] == Configuration::get('PS_DEFAULT_COUNTRY') $order['id_country'] == Configuration::get('PS_DEFAULT_COUNTRY')
? Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP') ? Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP')
: Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP_OVERSEAS') : Configuration::get('CONF_'.strtoupper($order['carrier_reference']).'_SHIP_OVERSEAS')
) / 100; ) / 100;
// Tally up these fees
if ($granularity == 'day')
{
if (!isset($expenses[strtotime($order['invoice_date'])]))
$expenses[strtotime($order['invoice_date'])] = 0;
$expenses[strtotime($order['invoice_date'])] += $flat_fees + $var_fees + $shipping_fees;
}
else
$expenses += $flat_fees + $var_fees + $shipping_fees;
} }
return $expenses; return $expenses;
} }
@@ -379,7 +463,7 @@ class AdminStatsControllerCore extends AdminStatsTabController
switch (Tools::getValue('kpi')) switch (Tools::getValue('kpi'))
{ {
case 'conversion_rate': case 'conversion_rate':
$visitors = AdminStatsController::getUniqueVisitors(date('Y-m-d', strtotime('-31 day')), date('Y-m-d', strtotime('-1 day')), false /*'day'*/); $visitors = AdminStatsController::getVisits(true, date('Y-m-d', strtotime('-31 day')), date('Y-m-d', strtotime('-1 day')), false /*'day'*/);
$orders = AdminStatsController::getOrders(date('Y-m-d', strtotime('-31 day')), date('Y-m-d', strtotime('-1 day')), false /*'day'*/); $orders = AdminStatsController::getOrders(date('Y-m-d', strtotime('-31 day')), date('Y-m-d', strtotime('-1 day')), false /*'day'*/);
// $data = array(); // $data = array();
@@ -600,23 +684,11 @@ class AdminStatsControllerCore extends AdminStatsTabController
case 'netprofit_visitor': case 'netprofit_visitor':
$date_from = date('Y-m-d', strtotime('-31 day')); $date_from = date('Y-m-d', strtotime('-31 day'));
$date_to = date('Y-m-d', strtotime('-1 day')); $date_to = date('Y-m-d', strtotime('-1 day'));
$total_visitors = AdminStatsController::getUniqueVisitors($date_from, $date_to);
$total_sales = AdminStatsController::getTotalSales($date_from, $date_to);
$total_expenses = AdminStatsController::getExpenses($date_from, $date_to);
$total_purchases = Db::getInstance(_PS_USE_SQL_SLAVE_)->getValue('
SELECT SUM(od.`product_quantity` * IF(
od.`purchase_supplier_price` > 0,
od.`purchase_supplier_price` / `conversion_rate`,
od.`original_product_price` * '.(int)Configuration::get('CONF_AVERAGE_PRODUCT_MARGIN').' / 100
)) as total_purchase_price
FROM `'._DB_PREFIX_.'orders` o
LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to).' 23:59:59"
'.Shop::addSqlRestriction(false, 'o'));
$net_profits = $total_sales; $total_visitors = AdminStatsController::getVisits(true, $date_from, $date_to);
$net_profits -= $total_purchases; $net_profits = AdminStatsController::getTotalSales($date_from, $date_to);
$net_profits -= $total_expenses; $net_profits -= AdminStatsController::getExpenses($date_from, $date_to);
$net_profits -= AdminStatsController::getPurchases($date_from, $date_to);
if ($total_visitors) if ($total_visitors)
$value = Tools::displayPrice($net_profits / $total_visitors, $currency); $value = Tools::displayPrice($net_profits / $total_visitors, $currency);
+17 -85
View File
@@ -68,80 +68,18 @@ class Dashtrends extends Module
{ {
// We need the following figures to calculate our stats // We need the following figures to calculate our stats
$tmp_data = array( $tmp_data = array(
'visits_score' => array(), 'visits' => array(),
'orders_score' => array(), 'orders' => array(),
'total_paid_tax_excl' => array(), 'total_paid_tax_excl' => array(),
'total_discounts_tax_excl' => array(), 'total_purchases' => array(),
'total_credit_tax_excl' => array(), 'total_expenses' => array()
'total_credit_shipping_tax_excl' => array(),
'total_product_price_tax_excl' => array(),
'total_purchase_price' => array()
); );
// The visits are retrieved from Analytics if available $tmp_data['visits'] = AdminStatsControllerCore::getVisits(false, $date_from, $date_to, 'day');
$gapi = Module::isInstalled('gapi') ? Module::getInstanceByName('gapi') : false; $tmp_data['orders'] = AdminStatsControllerCore::getOrders($date_from, $date_to, 'day');
if (Validate::isLoadedObject($gapi) && $gapi->isConfigured()) $tmp_data['total_paid_tax_excl'] = AdminStatsControllerCore::getTotalSales($date_from, $date_to, 'day');
{ $tmp_data['total_purchases'] = AdminStatsControllerCore::getPurchases($date_from, $date_to, 'day');
if ($result = $gapi->requestReportData('ga:date', 'ga:visits', $date_from.' 00:00:00', $date_to.' 23:59:59', null, null, 1, 9999)) $tmp_data['total_expenses'] = AdminStatsControllerCore::getExpenses($date_from, $date_to, 'day');
foreach ($result as $row)
$tmp_data['visits_score'][strtotime(preg_replace('/^([0-9]{4})([0-9]{2})([0-9]{2})$/', '$1-$2-$3', $row['dimensions']['date']))] = $row['metrics']['visits'];
}
else
{
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT
LEFT(`date_add`, 10) as date,
COUNT(*) as visits_score
FROM `'._DB_PREFIX_.'connections`
WHERE `date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to.' 23:59:59').'"
'.Shop::addSqlRestriction(false).'
GROUP BY LEFT(`date_add`, 10)');
foreach ($result as $row)
$tmp_data['visits_score'][strtotime($row['date'])] = $row['visits_score'];
}
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT
LEFT(`invoice_date`, 10) as date,
COUNT(*) as orders_score,
SUM(`total_paid_tax_excl` / `conversion_rate`) as total_paid_tax_excl,
SUM(`total_discounts_tax_excl` / `conversion_rate`) as total_discounts_tax_excl
FROM `'._DB_PREFIX_.'orders`
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to.' 23:59:59').'"
'.Shop::addSqlRestriction(Shop::SHARE_ORDER).'
GROUP BY LEFT(`invoice_date`, 10)');
foreach ($result as $row)
foreach (array('orders_score', 'total_paid_tax_excl', 'total_discounts_tax_excl') as $var)
$tmp_data[$var][strtotime($row['date'])] = $row[$var];
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT
LEFT(os.`date_add`, 10) as date,
SUM(os.`amount` / o.`conversion_rate`) as total_credit_tax_excl,
SUM(os.`shipping_cost_amount` / o.`conversion_rate`) as total_credit_shipping_tax_excl
FROM `'._DB_PREFIX_.'orders` o
LEFT JOIN `'._DB_PREFIX_.'order_slip` os ON o.id_order = os.id_order
WHERE os.`date_add` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to.' 23:59:59').'"
'.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').'
GROUP BY LEFT(os.`date_add`, 10)');
foreach ($result as $row)
foreach (array('total_credit_tax_excl', 'total_credit_shipping_tax_excl') as $var)
$tmp_data[$var][strtotime($row['date'])] = $row[$var];
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT
LEFT(`invoice_date`, 10) as date,
SUM(od.`total_price_tax_excl` / `conversion_rate`) as total_product_price_tax_excl,
SUM(od.`product_quantity` * od.`purchase_supplier_price` / `conversion_rate`) as total_purchase_price
FROM `'._DB_PREFIX_.'orders` o
LEFT JOIN `'._DB_PREFIX_.'order_detail` od ON o.id_order = od.id_order
WHERE `invoice_date` BETWEEN "'.pSQL($date_from).' 00:00:00" AND "'.pSQL($date_to.' 23:59:59').'"
'.Shop::addSqlRestriction(Shop::SHARE_ORDER, 'o').'
GROUP BY LEFT(`invoice_date`, 10)');
foreach ($result as $row)
foreach (array('total_product_price_tax_excl', 'total_purchase_price') as $var)
$tmp_data[$var][strtotime($row['date'])] = $row[$var];
return $tmp_data; return $tmp_data;
} }
@@ -162,28 +100,22 @@ class Dashtrends extends Module
$refined_data['sales'][$date] = 0; $refined_data['sales'][$date] = 0;
if (isset($gross_data['total_paid_tax_excl'][$date])) if (isset($gross_data['total_paid_tax_excl'][$date]))
$refined_data['sales'][$date] += $gross_data['total_paid_tax_excl'][$date]; $refined_data['sales'][$date] += $gross_data['total_paid_tax_excl'][$date];
if (isset($gross_data['total_credit_tax_excl'][$date]))
$refined_data['sales'][$date] -= $gross_data['total_credit_tax_excl'][$date];
if (isset($gross_data['total_credit_shipping_tax_excl'][$date]))
$refined_data['sales'][$date] -= $gross_data['total_credit_shipping_tax_excl'][$date];
$refined_data['orders'][$date] = isset($gross_data['orders_score'][$date]) ? $gross_data['orders_score'][$date] : 0; $refined_data['orders'][$date] = isset($gross_data['orders'][$date]) ? $gross_data['orders'][$date] : 0;
$refined_data['average_cart_value'][$date] = $refined_data['orders'][$date] ? $refined_data['sales'][$date] / $refined_data['orders'][$date] : 0; $refined_data['average_cart_value'][$date] = $refined_data['orders'][$date] ? $refined_data['sales'][$date] / $refined_data['orders'][$date] : 0;
$refined_data['visits'][$date] = isset($gross_data['visits_score'][$date]) ? $gross_data['visits_score'][$date] : 0; $refined_data['visits'][$date] = isset($gross_data['visits'][$date]) ? $gross_data['visits'][$date] : 0;
$refined_data['conversion_rate'][$date] = $refined_data['visits'][$date] ? $refined_data['orders'][$date] / $refined_data['visits'][$date] : 0; $refined_data['conversion_rate'][$date] = $refined_data['visits'][$date] ? $refined_data['orders'][$date] / $refined_data['visits'][$date] : 0;
$refined_data['net_profits'][$date] = 0; $refined_data['net_profits'][$date] = 0;
if (isset($gross_data['total_product_price_tax_excl'][$date])) if (isset($gross_data['total_paid_tax_excl'][$date]))
$refined_data['net_profits'][$date] += $gross_data['total_product_price_tax_excl'][$date]; $refined_data['net_profits'][$date] += $gross_data['total_paid_tax_excl'][$date];
if (isset($gross_data['total_discounts_tax_excl'][$date])) if (isset($gross_data['total_purchases'][$date]))
$refined_data['net_profits'][$date] -= $gross_data['total_discounts_tax_excl'][$date]; $refined_data['net_profits'][$date] -= $gross_data['total_purchases'][$date];
if (isset($gross_data['total_purchase_price'][$date])) if (isset($gross_data['total_expenses'][$date]))
$refined_data['net_profits'][$date] -= $gross_data['total_purchase_price'][$date]; $refined_data['net_profits'][$date] -= $gross_data['total_expenses'][$date];
if (isset($gross_data['total_credit_tax_excl'][$date]))
$refined_data['net_profits'][$date] -= $gross_data['total_credit_tax_excl'][$date];
} }
return $refined_data; return $refined_data;
} }