285 lines
9.0 KiB
PHP
Executable File
285 lines
9.0 KiB
PHP
Executable File
<?php
|
|
if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point');
|
|
|
|
require_once('include/Dashlets/Dashlet.php');
|
|
require_once('include/Sugar_Smarty.php');
|
|
require_once('Helper.php');
|
|
|
|
|
|
class MySaldoDashlet extends Dashlet {
|
|
|
|
var $savedText; // users's saved text
|
|
var $height = '300'; // height of the pad
|
|
var $firstLoad = 'yes';
|
|
function MySaldoDashlet($id, $def = null) {
|
|
|
|
global $current_user, $mod_strings, $app_strings;
|
|
require('modules/EcmPaymentStates/Dashlets/MySaldoDashlet/MySaldoDashlet.meta.php');
|
|
require('modules/EcmCharts/language/pl_pl.lang.php');
|
|
parent::Dashlet($id); // call parent constructor
|
|
|
|
$this->isConfigurable = true; // dashlet is configurable
|
|
$this->hasScript = false; // dashlet has java ipt attached to it
|
|
$options = $this->loadOptions();
|
|
|
|
// if no custom title, use default
|
|
if(!$options["title"])
|
|
$options["title"] = "Salda";
|
|
|
|
$this->title = $options["title"];
|
|
|
|
}
|
|
|
|
function display() {
|
|
global $current_user, $mod_strings, $app_strings;
|
|
|
|
// prepare data
|
|
$db = $GLOBALS ['db'];
|
|
|
|
if ($_REQUEST['account_type'])
|
|
$account_type = $_REQUEST['account_type'];
|
|
else
|
|
$account_type = '';
|
|
|
|
if ($_REQUEST['saldo_type'])
|
|
$saldo_type = $_REQUEST['saldo_type'];
|
|
else
|
|
$saldo_type = '';
|
|
|
|
|
|
if ($_REQUEST['type2'])
|
|
$and = " and account_type2='".$_REQUEST['type2']."'";
|
|
else
|
|
$saldo_type = '';
|
|
// get list of accounts
|
|
$saldo_type='minus';
|
|
if ($account_type == '')
|
|
$clients = $db->query ( "SELECT distinct t.parent_id FROM ecmtransactions as t
|
|
INNER JOIN accounts AS a
|
|
ON t.parent_id = a.id
|
|
WHERE t.settled!='1' AND t.deleted='0' ".$and." ORDER BY t.parent_name" );
|
|
else
|
|
$clients = $db->query ( "
|
|
SELECT distinct t.parent_id FROM ecmtransactions AS t
|
|
INNER JOIN accounts AS a
|
|
ON t.parent_id = a.id
|
|
WHERE
|
|
t.settled!='1' AND
|
|
t.deleted='0' AND
|
|
a.account_type = '$account_type' ".$and."
|
|
ORDER BY t.parent_name;
|
|
" );
|
|
// arrays to handle data for SMARTY
|
|
$data = array ();
|
|
$sum = array ();
|
|
$sum['saldo'] = 0;
|
|
$sum['today_saldo'] = 0;
|
|
$sum ['unsettled'] = 0;
|
|
$sum ['not_overdue'] = 0;
|
|
$sum ['overdue'] = 0;
|
|
$sum ['2'] = 0; // 1..30
|
|
$sum ['3'] = 0; // 31..60
|
|
$sum ['4'] = 0; // 61..90
|
|
$sum ['5'] = 0; // 91..180
|
|
$sum ['6'] = 0; // 180..
|
|
$sum ['8'] = 0;
|
|
$sum ['9'] = 0;
|
|
$sum ['10'] = 0;
|
|
|
|
while ( $c = $db->fetchByAssoc ( $clients ) ) {
|
|
|
|
$row = array ();
|
|
$row['id'] = $c['parent_id'];
|
|
|
|
$tt= $db->fetchByAssoc ( $db->query ( "SELECT name FROM accounts WHERE id='" . $c ['parent_id'] . "'" ) );
|
|
$row ['name'] =$tt['name'];
|
|
$row ['unsettled'] = getData ( $c ['parent_id'], 0 );
|
|
$row ['not_overdue'] = getData ( $c ['parent_id'], 7 );
|
|
$row ['overdue'] = getData ( $c ['parent_id'], 1 );
|
|
$row ['2'] = getData ( $c ['parent_id'], 2 ); // 1..30
|
|
$row ['3'] = getData ( $c ['parent_id'], 3 ); // 31..60
|
|
$row ['4'] = getData ( $c ['parent_id'], 4 ); // 61..90
|
|
$row ['5'] = getData ( $c ['parent_id'], 5 ); // 91..180
|
|
$row ['6'] = getData ( $c ['parent_id'], 6 ); // 180..
|
|
$row ['saldo'] = getData ( $c ['parent_id'], 8 );
|
|
$row ['today_saldo'] = getData ( $c ['parent_id'], 9 );
|
|
if($saldo_type=='plus' && !($row ['saldo']>0))continue;
|
|
if($saldo_type=='minus' && $row ['saldo']>0)continue;
|
|
$sum ['unsettled'] += $row ['unsettled'];
|
|
$sum ['not_overdue'] += $row ['not_overdue'];
|
|
$sum ['overdue'] += $row ['overdue'];
|
|
$sum ['2'] += $row ['2']; // 1..30
|
|
$sum ['3'] += $row ['3']; // 31..60
|
|
$sum ['4'] += $row ['4']; // 61..90
|
|
$sum ['5'] += $row ['5']; // 91..180
|
|
$sum ['6'] += $row ['6']; // 180..
|
|
$sum ['saldo'] += $row ['saldo'];
|
|
$sum ['today_saldo'] += $row ['today_saldo'];
|
|
|
|
$data [] = $row;
|
|
}
|
|
// format sum
|
|
$sum ['unsettled'] = format_number ( $sum ['unsettled'] );
|
|
$sum ['not_overdue'] = format_number ( $sum ['not_overdue'] );
|
|
$sum ['overdue'] = format_number ( $sum ['overdue'] );
|
|
$sum ['2'] = format_number ( $sum ['2'] ); // 1..30
|
|
$sum ['3'] = format_number ( $sum ['3'] ); // 31..60
|
|
$sum ['4'] = format_number ( $sum ['4'] ); // 61..90
|
|
$sum ['5'] = format_number ( $sum ['5'] ); // 91..180
|
|
$sum ['6'] = format_number ( $sum ['6'] ); // 180..
|
|
$sum ['saldo'] = format_number ( $sum ['saldo'] );
|
|
$sum ['today_saldo'] = format_number ( $sum ['today_saldo'] );
|
|
|
|
// sort
|
|
$sort = array ();
|
|
|
|
if ($_REQUEST ['sort'] && $_REQUEST ['sort'] != '')
|
|
switch ($_REQUEST ['sort']) {
|
|
case 'unsettled' :
|
|
if ($_REQUEST ['sortType'] == 'asc') {
|
|
usort ( $data, "cmpUnsettled" );
|
|
$sort ['unsettled'] = 'desc'; // now is asc, so next is desc
|
|
}
|
|
if ($_REQUEST ['sortType'] == 'desc') {
|
|
usort ( $data, "cmpUnsettledDesc" );
|
|
$sort ['unsettled'] = 'asc'; // same story
|
|
}
|
|
break;
|
|
case 'account' :
|
|
if ($_REQUEST ['sortType'] == 'asc') {
|
|
usort ( $data, "cmpAccount" );
|
|
$sort ['account'] = 'desc'; // now is asc, so next is desc
|
|
}
|
|
if ($_REQUEST ['sortType'] == 'desc') {
|
|
usort ( $data, "cmpAccountDesc" );
|
|
$sort ['account'] = 'asc'; // same story
|
|
}
|
|
break;
|
|
case 'not_overdue' :
|
|
if ($_REQUEST ['sortType'] == 'asc') {
|
|
usort ( $data, "cmpNotOverdue" );
|
|
$sort ['not_overdue'] = 'desc'; // now is asc, so next is desc
|
|
}
|
|
if ($_REQUEST ['sortType'] == 'desc') {
|
|
usort ( $data, "cmpNotOverdueDesc" );
|
|
$sort ['not_overdue'] = 'asc'; // same story
|
|
}
|
|
break;
|
|
case 'overdue' :
|
|
if ($_REQUEST ['sortType'] == 'asc') {
|
|
usort ( $data, "cmpOverdue" );
|
|
$sort ['overdue'] = 'desc'; // now is asc, so next is desc
|
|
}
|
|
if ($_REQUEST ['sortType'] == 'desc') {
|
|
usort ( $data, "cmpOverdueDesc" );
|
|
$sort ['overdue'] = 'asc'; // same story
|
|
}
|
|
break;
|
|
case 'saldo' :
|
|
if ($_REQUEST ['sortType'] == 'asc') {
|
|
usort ( $data, "cmpSaldo" );
|
|
$sort ['saldo'] = 'desc'; // now is asc, so next is desc
|
|
}
|
|
if ($_REQUEST ['sortType'] == 'desc') {
|
|
usort ( $data, "cmpSaldoDesc" );
|
|
$sort ['saldo'] = 'asc'; // same story
|
|
}
|
|
break;
|
|
case 'today_saldo' :
|
|
if ($_REQUEST ['sortType'] == 'asc') {
|
|
usort ( $data, "cmpTodaySaldo" );
|
|
$sort ['today_saldo'] = 'desc'; // now is asc, so next is desc
|
|
}
|
|
if ($_REQUEST ['sortType'] == 'desc') {
|
|
usort ( $data, "cmpTodaySaldoDesc" );
|
|
$sort ['today_saldo'] = 'asc'; // same story
|
|
}
|
|
break;
|
|
}
|
|
|
|
// format data
|
|
foreach ( $data as $key => $row ) {
|
|
// format numbers
|
|
$row ['unsettled'] = format_number ( $row ['unsettled'] );
|
|
$row ['not_overdue'] = format_number ( $row ['not_overdue'] );
|
|
$row ['overdue'] = format_number ( $row ['overdue'] );
|
|
$row ['2'] = format_number ( $row ['2'] ); // 1..30
|
|
$row ['3'] = format_number ( $row ['3'] ); // 31..60
|
|
$row ['4'] = format_number ( $row ['4'] ); // 61..90
|
|
$row ['5'] = format_number ( $row ['5'] ); // 91..180
|
|
$row ['6'] = format_number ( $row ['6'] ); // 180..
|
|
$row ['saldo'] = format_number ( $row ['saldo'] );
|
|
$row ['today_saldo'] = format_number ( $row ['today_saldo'] );
|
|
|
|
$data [$key] = $row;
|
|
}
|
|
|
|
// create & execute smarty
|
|
$ss = new Sugar_Smarty ();
|
|
global $mod_strings;
|
|
$ss->assign ( "MOD", $mod_strings );
|
|
$ss->assign ( "DATA", $data );
|
|
$ss->assign ( "SUM", $sum );
|
|
$ss->assign ( "SORT", $sort );
|
|
$ss->assign("account_type", $account_type);
|
|
$ss->assign("saldo_type",$saldo_type);
|
|
$ss->assign("type",$_REQUEST['type2']);
|
|
$ss->assign("type2",$app_list_strings['account_type2_dom']);
|
|
$output = $ss->fetch('modules/EcmPaymentStates/Dashlets/MySaldoDashlet/MySaldoDashlet.tpl');
|
|
|
|
|
|
|
|
|
|
|
|
// return parent::display for title and smarty template
|
|
return parent::display($this->dashletStrings['LBL_DBLCLICK_HELP']) . $output;
|
|
}
|
|
|
|
function displayOptions() {
|
|
global $mod_strings,$current_user;
|
|
// format daty
|
|
$smarty = new Sugar_Smarty();
|
|
// Pobieram ustawienia
|
|
$options = $this->loadOptions();
|
|
// Data od
|
|
$Calendar_daFormat = str_replace("d","%d",str_replace("m","%m",str_replace("Y","%Y",$GLOBALS['timedate']->get_date_format())));
|
|
if(!$options['date_from'])
|
|
$options['date_from'] = '01.01.2010';
|
|
|
|
//The id must be assigned in all dashlet options pages
|
|
$smarty->assign('id', $this->id);
|
|
// Typ dokumentu: all, normal, correct
|
|
|
|
|
|
$smarty->assign('date_from', $options["date_from"]);
|
|
$smarty->assign("dateFormat", $Calendar_daFormat);
|
|
$smarty->assign('LANG', $mod_strings);
|
|
$smarty->assign('title', $options["title"]);
|
|
// Pokazywać dane porównawcze? Tak: enabled, nie: disabled
|
|
|
|
|
|
// Przekazuję widok opcji do metody displayOptions()
|
|
return parent::displayOptions() . $smarty->fetch('modules/EcmPaymentStates/Dashlets/MySaldoDashlet/MySaldoDashletOptions.tpl');
|
|
}
|
|
|
|
// Zapisywanie opcji dashletu
|
|
function saveOptions($req) {
|
|
$options = array();
|
|
$options["year"] = $req["year"];
|
|
$options["comparativeData"] = $req["comparativeData"];
|
|
$options["type"] = $req["type"];
|
|
$options["chartType"] = $req["chartType"];
|
|
$options["title"] = $req["title"];
|
|
|
|
if( $req["account_name"] == '' )
|
|
{
|
|
$options["contractor_name"] = '';
|
|
$options["contractor_id"] = '';
|
|
} else {
|
|
$options["contractor_name"] = $req['account_name'];
|
|
$options["contractor_id"] = $req['account_id'];
|
|
}
|
|
return $options;
|
|
}
|
|
}
|
|
?>
|