init
This commit is contained in:
@@ -0,0 +1,193 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* Klasa reprezentująca kontrahenta
|
||||
*/
|
||||
class Contractor {
|
||||
// Nazwa kontrahenta
|
||||
var $name;
|
||||
// Cena netto
|
||||
var $subtotal;
|
||||
// Koszty
|
||||
var $cost;
|
||||
|
||||
public function __construct($name, $subtotal, $cost)
|
||||
{
|
||||
$this->name = $name;
|
||||
$this->subtotal = $subtotal;
|
||||
$this->cost = $cost;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/*
|
||||
* Klasa pomocnicza przy generowaniu wykresów dla MyContractorsChartsSalesDashlet
|
||||
*/
|
||||
class MyContractorChartSalesHelper {
|
||||
|
||||
// Global database connection instance
|
||||
var $db_connection;
|
||||
// Chart options
|
||||
var $options;
|
||||
// Tablica kontrahentów
|
||||
var $contractors = array();
|
||||
// Dane porównawcze
|
||||
var $compData = null;
|
||||
|
||||
// Constructor
|
||||
public function __construct($db_connection, $options, $comparativeData = null)
|
||||
{
|
||||
//$this->log("Parametry dashletu: ", $options );
|
||||
$this->db_connection = $db_connection;
|
||||
$this->options = $options;
|
||||
$this->compData = $comparativeData;
|
||||
|
||||
$this->getData();
|
||||
}
|
||||
|
||||
public function haveComparativeData()
|
||||
{
|
||||
if( $this->compData != null )
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
//----------------------------------------
|
||||
// Private methods
|
||||
//----------------------------------------
|
||||
|
||||
/**
|
||||
* Metoda pobiera wszystkie dane o kontrahentach
|
||||
*/
|
||||
private function getData()
|
||||
{
|
||||
|
||||
$date_from = $this->prepareDateToQuery( new DateTime($this->options["date_from"]) );
|
||||
$date_to = $this->prepareDateToQuery( new DateTime($this->options["date_to"]) );
|
||||
$type = $this->options["type"];
|
||||
$count = $this->options["count"];
|
||||
|
||||
|
||||
$query = "
|
||||
SELECT
|
||||
acco.name as 'name',
|
||||
acco.parent_id as 'parent',
|
||||
sum(
|
||||
CASE WHEN faktura.type!='correct'
|
||||
THEN
|
||||
CASE WHEN faktura.currency_value is null or faktura.currency_value='' or faktura.currency_value=0
|
||||
THEN
|
||||
pozycja.total_netto
|
||||
ELSE
|
||||
pozycja.total_netto*faktura.currency_value
|
||||
END
|
||||
ELSE
|
||||
CASE WHEN faktura.currency_value is null or faktura.currency_value='' or faktura.currency_value=0
|
||||
THEN
|
||||
pozycja.total_netto-pozycja.old_total_netto
|
||||
ELSE
|
||||
(pozycja.total_netto-pozycja.old_total_netto)*faktura.currency_value
|
||||
END
|
||||
END
|
||||
) as netto,
|
||||
sum(
|
||||
CASE WHEN faktura.type!='correct'
|
||||
THEN
|
||||
pozycja.price_purchase*pozycja.quantity
|
||||
ELSE
|
||||
0
|
||||
END
|
||||
) as cost
|
||||
FROM
|
||||
ecminvoiceoutitems pozycja
|
||||
JOIN
|
||||
ecminvoiceouts faktura ON pozycja.ecminvoiceout_id = faktura.id
|
||||
JOIN
|
||||
accounts acco ON acco.id = faktura.parent_id
|
||||
WHERE
|
||||
faktura.register_date BETWEEN
|
||||
'$date_from' AND '$date_to'
|
||||
and faktura.type like '$type'
|
||||
and faktura.canceled = 0
|
||||
and faktura.deleted= 0
|
||||
and pozycja.deleted= 0";
|
||||
|
||||
if( $this->options["group_media_saturn_holding"] == 'enabled' )
|
||||
$query .= " GROUP BY IFNULL(acco.parent_id, acco.id) ";
|
||||
else
|
||||
$query .= " GROUP BY acco.id ";
|
||||
|
||||
$query .= "ORDER BY netto DESC
|
||||
LIMIT $count;
|
||||
";
|
||||
|
||||
$results = $this->db_connection->query( $query );
|
||||
$allContractors = array();
|
||||
|
||||
while( $result = $this->db_connection->fetchByAssoc( $results ) )
|
||||
{
|
||||
if( $result['parent'] == "1249" && $this->options["group_media_saturn_holding"] == 'enabled')
|
||||
$name = "Media Saturn Holding";
|
||||
else
|
||||
$name = $result["name"];
|
||||
|
||||
$contractor = new Contractor($name,
|
||||
$result["netto"],
|
||||
$result["cost"]);
|
||||
|
||||
|
||||
if( $contractor != null )
|
||||
$allContractors[] = $contractor;
|
||||
}
|
||||
|
||||
$this->contractors = $allContractors;
|
||||
}
|
||||
|
||||
public function showContractors()
|
||||
{
|
||||
print_r( $this->contractors );
|
||||
}
|
||||
|
||||
public function getContractors()
|
||||
{
|
||||
return $this->contractors;
|
||||
}
|
||||
|
||||
/**
|
||||
* Metoda przygotowuje datę do wstawienia w zapytanie SQL
|
||||
*/
|
||||
private function prepareDateToQuery( DateTime $d )
|
||||
{
|
||||
return $d->format('Y-m-d');
|
||||
}
|
||||
|
||||
/**
|
||||
* Render data to Google Charts options
|
||||
*/
|
||||
public function renderGoogleChartOptions()
|
||||
{
|
||||
$data = "";
|
||||
|
||||
for( $i = 0; $i < count($this->contractors); $i++)
|
||||
{
|
||||
if( !$this->contractors[$i]->isEmpty ) {
|
||||
$data .= "['".$this->contractors[$i]->name."', ".$this->contractors[$i]->subtotal;
|
||||
if( $this->options["comparativeData"] == 'enabled' )
|
||||
$data .= ", ".$this->compData[$i]->subtotal."0],";
|
||||
else
|
||||
$data .= "],";
|
||||
//echo "['".$this->categories[$i]->name."', ".$this->categories[$i]->subtotal.", ".$this->compData[$i]->subtotal."],<br>";
|
||||
}
|
||||
}
|
||||
|
||||
$data = rtrim($data, ",");
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
} // end class
|
||||
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user