2025-05-12 15:44:39 +00:00
< ? php
2025-08-26 12:16:05 +02:00
if ( ! defined ( 'sugarEntry' ) || ! sugarEntry )
die ( 'Not A Valid Entry Point' );
2025-08-26 10:27:51 +02:00
2025-05-12 15:44:39 +00:00
2025-08-26 12:16:05 +02:00
ini_set ( 'memory_limit' , '-1' );
ini_set ( 'max_execution_time' , '-1' );
// prepare data
$db = $GLOBALS [ 'db' ];
2025-05-12 15:44:39 +00:00
$db -> query ( 'RESET QUERY CACHE;' );
$db -> query ( 'FLUSH QUERY CACHE' );
2025-08-26 12:16:05 +02:00
if ( $_REQUEST [ 'submit' ]){
if ( $_REQUEST [ 'account_type' ])
$account_type = $_REQUEST [ 'account_type' ];
else
$account_type = '' ;
if ( $_REQUEST [ 'account_type' ] == 'a' ){
2025-08-26 10:27:51 +02:00
$account_type = '' ;
}
2025-08-26 12:16:05 +02:00
if ( $_REQUEST [ 'saldo_type' ])
$saldo_type = $_REQUEST [ 'saldo_type' ];
else
$saldo_type = '' ;
if ( $_REQUEST [ 'type2' ])
$and = " and account_type2=' " . $_REQUEST [ 'type2' ] . " ' " ;
if ( $saldo_type != '' ){
$type = " t.settled!='1' and " ;
} else {
$type = '' ;
2025-08-26 10:27:51 +02:00
}
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
if ( $_REQUEST [ 'user_id' ] != '' ){
$and .= " and a.assigned_user_id=' " . $_REQUEST [ 'user_id' ] . " ' " ;
} else {
$type = '' ;
2025-08-26 10:27:51 +02:00
}
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
// get list of accounts
if ( $account_type == '' )
2025-08-26 15:26:23 +02:00
$clients = $db -> query ( " SELECT DISTINCT
t . parent_id ,
a . index_dbf AS index_dbf ,
a . name AS account_name ,
a . currency_id AS currency_id ,
cur . name AS currency_name
FROM ecmtransactions AS t
INNER JOIN accounts AS a ON t . parent_id = a . id
LEFT JOIN currencies AS cur ON cur . id = a . currency_id
WHERE " . $type . " t . deleted = '0' " . $and . "
ORDER BY a . index_dbf " );
2025-08-26 12:16:05 +02:00
else
$clients = $db -> query ( "
2025-08-26 15:26:23 +02:00
SELECT DISTINCT
t . parent_id ,
a . index_dbf AS index_dbf ,
a . name AS account_name ,
a . currency_id AS currency_id ,
cur . name AS currency_name
FROM ecmtransactions AS t
INNER JOIN accounts AS a ON t . parent_id = a . id
LEFT JOIN currencies AS cur ON cur . id = a . currency_id
WHERE " . $type . "
t . deleted = '0' AND ( a . account_type = 'rs' OR a . account_type = '$account_type' ) " . $and . "
ORDER BY a . index_dbf
" );
2025-08-26 12:16:05 +02:00
// arrays to handle data for SMARTY
$data = array ();
$sum = array ();
$idToPdf = '' ;
while ( $c = $db -> fetchByAssoc ( $clients ) ) {
$row = array ();
$row [ 'id' ] = $c [ 'parent_id' ];
2025-08-26 15:26:23 +02:00
// Use data from joined accounts/currencies to avoid per-row queries
$row [ 'name' ] = $c [ 'account_name' ];
$row [ 'index' ] = $c [ 'index_dbf' ];
// Compute financial aggregates
$row [ 'unsettled' ] = getData ( $c [ 'parent_id' ], 0 );
$row [ 'not_overdue' ] = getData ( $c [ 'parent_id' ], 7 );
$row [ 'overdue' ] = getData ( $c [ 'parent_id' ], 1 );
$row [ '2' ] = getData2 ( $c [ 'parent_id' ], 2 ); // 1..30
$row [ '3' ] = getData2 ( $c [ 'parent_id' ], 3 ); // 31..60
$row [ '4' ] = getData2 ( $c [ 'parent_id' ], 4 ); // 61..90
$row [ '5' ] = getData2 ( $c [ 'parent_id' ], 5 ); // 91..180
$row [ '6' ] = getData2 ( $c [ 'parent_id' ], 6 ); // 180..
$row [ 'saldo' ] = getData ( $c [ 'parent_id' ], 8 );
$row [ 'today_saldo' ] = 0 ; // getData2 ( $c ['parent_id'],9,$_REQUEST['saldo_date_val'] );
// Currency handling
$currency_id = $c [ 'currency_id' ] ? : 'PLN' ;
$currency_name = $c [ 'currency_name' ] ? : $currency_id ;
$row [ 'currency_id' ] = $currency_name ;
// Filters
if ( $saldo_type == 'plus' && ! ( $row [ 'saldo' ] > 0 )) continue ;
if ( $saldo_type == 'minus' && ( $row [ 'saldo' ] >= 0 )) continue ;
if ( $saldo_type == 'zero' && ! ( $row [ 'saldo' ] == 0 )) continue ;
if ( $saldo_type == '' && $row [ 'saldo' ] == 0 ) continue ;
$idToPdf .= $row [ 'id' ] . ',' ;
// Summaries per currency
$sum [ $currency_id ][ 'unsettled' ] += $row [ 'unsettled' ];
$sum [ $currency_id ][ 'not_overdue' ] += $row [ 'not_overdue' ];
$sum [ $currency_id ][ 'overdue' ] += $row [ 'overdue' ];
$sum [ $currency_id ][ '2' ] += $row [ '2' ]; // 1..30
$sum [ $currency_id ][ '3' ] += $row [ '3' ]; // 31..60
$sum [ $currency_id ][ '4' ] += $row [ '4' ]; // 61..90
$sum [ $currency_id ][ '5' ] += $row [ '5' ]; // 91..180
$sum [ $currency_id ][ '6' ] += $row [ '6' ]; // 180..
$sum [ $currency_id ][ 'saldo' ] += $row [ 'saldo' ];
$sum [ $currency_id ][ 'today_saldo' ] += $row [ 'today_saldo' ];
$sum [ $currency_id ][ 'currency_id' ] = $currency_name ;
$data [] = $row ;
2025-08-26 10:27:51 +02:00
}
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
// sort
$sort = array ();
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
}
$user_list = array ();
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
$z = $db -> query ( " select id,first_name,last_name from users where deleted=0 " );
while ( $dane = $db -> fetchByAssoc ( $z )){
$user_list [ $dane [ 'id' ]] = $dane [ 'first_name' ] . ' ' . $dane [ 'last_name' ];
}
// create & execute smarty
$ss = new Sugar_Smarty ();
global $mod_strings , $app_list_strings ;
$ss -> assign ( " MOD " , $mod_strings );
$ss -> assign ( " DATA " , $data );
$ss -> assign ( " SUM " , $sum );
$ss -> assign ( " SORT " , $sort );
$ss -> assign ( " account_type " , $account_type );
$app_list_strings [ 'account_type_dom' ][ 'a' ] = 'Wszystkie' ;
$ss -> assign ( " account_type_list " , $app_list_strings [ 'account_type_dom' ]);
$ss -> assign ( " saldo_type " , $saldo_type );
$ss -> assign ( " saldo_date_val " , $_REQUEST [ 'saldo_date_val' ]);
$ss -> assign ( " idToPdf " , $idToPdf );
$ss -> assign ( " type " , $_REQUEST [ 'type2' ]);
$ss -> assign ( " type2 " , $app_list_strings [ 'account_type2_dom' ]);
$ss -> assign ( " user_id " , $_REQUEST [ 'user_id' ]);
$ss -> assign ( " users " , $user_list );
echo $ss -> display ( 'modules/EcmPaymentStates/tpls/summary1.tpl' );
// helper functions
function getData2 ( $id , $expired , $dates = null ) {
$db = $GLOBALS [ 'db' ];
$saldo = false ;
$settled = " t.settled!='1' AND " ;
switch ( $expired ) {
case 1 :
$date = new DateTime ( date ( " Y-m-d " ) );
$d = $date -> format ( 'Y-m-d' );
$payment_date = " payment_date <= ' $d ' " ;
break ;
case 2 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-30 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date >= ' $d_f ' AND payment_date < ' $d_t ' " ;
break ;
case 3 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$date_to -> modify ( '-31 days' );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-60 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date >= ' $d_f ' AND payment_date <= ' $d_t ' " ;
break ;
case 4 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$date_to -> modify ( '-61 days' );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-90 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date >= ' $d_f ' AND payment_date <= ' $d_t ' " ;
break ;
case 5 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$date_to -> modify ( '-91 days' );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-180 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date >= ' $d_f ' AND payment_date <= ' $d_t ' " ;
break ;
case 6 :
$date = new DateTime ( date ( " Y-m-d " ) );
$date -> modify ( '-181 days' );
$d = $date -> format ( 'Y-m-d' );
$payment_date = " payment_date <= ' $d ' " ;
break ;
case 9 :
if ( $dates == null ){
$date = new DateTime ( date ( " Y-m-d " ) );
$d = $date -> format ( 'Y-m-d' );
} else {
$date = new DateTime ( date ( " Y-m-d " , strtotime ( $dates ) ) );
$d = $date -> format ( 'Y-m-d' );
}
$date = new DateTime ( date ( " Y-m-d " ) );
$d = $date -> format ( 'Y-m-d' );
$payment_date = " payment_date <= ' $d ' " ;
$settled = " " ;
$saldo = true ;
break ;
}
2025-08-26 15:26:23 +02:00
// TYPE 0 transactions
$ids0 = array ();
$r_values0 = array ();
$suma0 = 0.0 ;
$q0 = $db -> query ( " SELECT t.id, t.value FROM ecmtransactions AS t WHERE t.parent_id=' $id ' AND t.deleted='0' AND " . $settled . " t.type='0' AND " . $payment_date );
while ( $r = $db -> fetchByAssoc ( $q0 )) {
$ids0 [] = $r [ 'id' ];
$r_values0 [ $r [ 'id' ]] = floatval ( $r [ 'value' ]);
$suma0 += floatval ( $r [ 'value' ]);
}
$total_settled0 = 0.0 ;
if ( ! empty ( $ids0 )) {
// Prefetch relations for all ids0
$idList0 = " ' " . implode ( " ',' " , $ids0 ) . " ' " ;
$relQ0 = $db -> query ( " SELECT ecmtransaction_a_id, ecmtransaction_b_id, value FROM ecmtransactions_rel WHERE ecmtransaction_a_id IN ( $idList0 ) OR ecmtransaction_b_id IN ( $idList0 ) " );
$relsById0 = array ();
$relatedIds0 = array ();
while ( $rr = $db -> fetchByAssoc ( $relQ0 )) {
$a = $rr [ 'ecmtransaction_a_id' ];
$b = $rr [ 'ecmtransaction_b_id' ];
$relsById0 [ $a ][] = $rr ;
$relsById0 [ $b ][] = $rr ;
if ( ! isset ( $r_values0 [ $a ])) $relatedIds0 [ $a ] = true ;
if ( ! isset ( $r_values0 [ $b ])) $relatedIds0 [ $b ] = true ;
}
$relatedIds0 = array_keys ( $relatedIds0 );
$txMap0 = array ();
if ( ! empty ( $relatedIds0 )) {
$relIdList0 = " ' " . implode ( " ',' " , $relatedIds0 ) . " ' " ;
$tq = $db -> query ( " SELECT id, type, payment_date, deleted, name FROM ecmtransactions WHERE id IN ( $relIdList0 ) " );
while ( $t = $db -> fetchByAssoc ( $tq )) {
$txMap0 [ $t [ 'id' ]] = $t ;
2025-08-26 12:16:05 +02:00
}
2025-08-26 15:26:23 +02:00
}
foreach ( $ids0 as $pid ) {
if ( empty ( $relsById0 [ $pid ])) continue ;
$r_val = $r_values0 [ $pid ];
foreach ( $relsById0 [ $pid ] as $rr ) {
// Determine the other side of the relation
$rel_id = ( $rr [ 'ecmtransaction_a_id' ] == $pid ) ? $rr [ 'ecmtransaction_b_id' ] : $rr [ 'ecmtransaction_a_id' ];
$t = isset ( $txMap0 [ $rel_id ]) ? $txMap0 [ $rel_id ] : $db -> fetchByAssoc ( $db -> query ( " SELECT id, type, payment_date, deleted, name FROM ecmtransactions WHERE id=' " . $rel_id . " ' " ));
if ( ! $t || $t [ 'deleted' ] == '1' ) continue ;
if ( $expired == 9 ) {
$date2 = new DateTime ( $t [ 'payment_date' ]);
$cmpDate = new DateTime ( $d );
if ( $date2 > $cmpDate ) continue ;
}
$rrVal = floatval ( $rr [ 'value' ]);
if ( $t [ 'type' ] == '0' ) {
if ( $r_val < 0 && $rrVal < 0 ) {
$total_settled0 += abs ( $rrVal );
} else {
$total_settled0 += $rrVal ;
}
2025-08-26 12:16:05 +02:00
} else {
2025-08-26 15:26:23 +02:00
$total_settled0 += abs ( $rrVal );
2025-08-26 12:16:05 +02:00
}
}
2025-08-26 11:16:43 +02:00
}
2025-08-26 12:16:05 +02:00
}
2025-08-26 12:03:57 +02:00
2025-08-26 15:26:23 +02:00
// TYPE 1 transactions
$ids1 = array ();
$r_values1 = array ();
$suma1 = 0.0 ;
$q1 = $db -> query ( " SELECT t.id, t.value FROM ecmtransactions AS t WHERE t.parent_id=' $id ' AND t.deleted='0' AND " . $settled . " t.type='1' AND " . $payment_date );
while ( $r = $db -> fetchByAssoc ( $q1 )) {
$ids1 [] = $r [ 'id' ];
$r_values1 [ $r [ 'id' ]] = floatval ( $r [ 'value' ]);
$suma1 += floatval ( $r [ 'value' ]);
}
2025-08-26 12:16:05 +02:00
2025-08-26 15:26:23 +02:00
$total_settled1 = 0.0 ;
if ( ! empty ( $ids1 )) {
$idList1 = " ' " . implode ( " ',' " , $ids1 ) . " ' " ;
$relQ1 = $db -> query ( " SELECT ecmtransaction_a_id, ecmtransaction_b_id, value FROM ecmtransactions_rel WHERE ecmtransaction_a_id IN ( $idList1 ) OR ecmtransaction_b_id IN ( $idList1 ) " );
$relsById1 = array ();
$relatedIds1 = array ();
while ( $rr = $db -> fetchByAssoc ( $relQ1 )) {
$a = $rr [ 'ecmtransaction_a_id' ];
$b = $rr [ 'ecmtransaction_b_id' ];
$relsById1 [ $a ][] = $rr ;
$relsById1 [ $b ][] = $rr ;
if ( ! isset ( $r_values1 [ $a ])) $relatedIds1 [ $a ] = true ;
if ( ! isset ( $r_values1 [ $b ])) $relatedIds1 [ $b ] = true ;
}
$relatedIds1 = array_keys ( $relatedIds1 );
$txMap1 = array ();
if ( ! empty ( $relatedIds1 )) {
$relIdList1 = " ' " . implode ( " ',' " , $relatedIds1 ) . " ' " ;
$tq = $db -> query ( " SELECT id, type, payment_date, deleted, name FROM ecmtransactions WHERE id IN ( $relIdList1 ) " );
while ( $t = $db -> fetchByAssoc ( $tq )) {
$txMap1 [ $t [ 'id' ]] = $t ;
}
}
foreach ( $ids1 as $pid ) {
if ( empty ( $relsById1 [ $pid ])) continue ;
foreach ( $relsById1 [ $pid ] as $rr ) {
$rel_id = ( $rr [ 'ecmtransaction_a_id' ] == $pid ) ? $rr [ 'ecmtransaction_b_id' ] : $rr [ 'ecmtransaction_a_id' ];
$t = isset ( $txMap1 [ $rel_id ]) ? $txMap1 [ $rel_id ] : $db -> fetchByAssoc ( $db -> query ( " SELECT id, type, payment_date, deleted, name FROM ecmtransactions WHERE id=' " . $rel_id . " ' " ));
if ( ! $t || $t [ 'deleted' ] == '1' ) continue ;
if ( $expired == 9 ) {
$date2 = new DateTime ( $t [ 'payment_date' ]);
$cmpDate = new DateTime ( $d );
if ( $date2 > $cmpDate ) continue ;
2025-08-26 12:16:05 +02:00
}
2025-08-26 15:26:23 +02:00
$total_settled1 += abs ( floatval ( $rr [ 'value' ]));
2025-08-26 12:16:05 +02:00
}
2025-08-26 10:27:51 +02:00
}
2025-08-26 12:16:05 +02:00
}
2025-08-26 12:03:57 +02:00
2025-08-26 15:26:23 +02:00
return $total_settled0 - $suma0 + $suma1 - $total_settled1 ;
2025-08-26 12:16:05 +02:00
}
2025-05-12 15:44:39 +00:00
2025-08-26 12:16:05 +02:00
function getSaldo ( $id ){
$db = $GLOBALS [ 'db' ];
$query_w = "
SELECT * FROM ecmtransactions
WHERE deleted = '0' AND
parent_id = '".$id."'
AND type = '0'
ORDER BY payment_date desc " ;
$query_ma = "
SELECT * FROM ecmtransactions
WHERE deleted = '0' AND
parent_id = '".$id."'
AND type = '1'
ORDER BY payment_date desc " ;
$res = $db -> query ( $query_w );
$total_winien = 0 ;
$winien = array ();
while ( $r = $db -> fetchByAssoc ( $res )) {
$tmp = array ();
$tmp [ 'settled_with' ] = array ();
$total_settled = 0 ;
$rel = $db -> query ( " SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id=' " . $r [ 'id' ] . " ' OR ecmtransaction_b_id=' " . $r [ 'id' ] . " ' " );
while ( $rr = $db -> fetchByAssoc ( $rel )) {
if ( $rr [ 'ecmtransaction_a_id' ] == $r [ 'id' ])
$rel_id = $rr [ 'ecmtransaction_b_id' ];
else
$rel_id = $rr [ 'ecmtransaction_a_id' ];
$t = $db -> fetchByAssoc ( $db -> query ( " SELECT * FROM ecmtransactions WHERE id=' $rel_id ' " ));
$tmp2 = array ();
$tmp2 [ 'name' ] = $t [ 'name' ];
$tmp2 [ 'trans_id' ] = $t [ 'id' ];
$tmp2 [ 'value' ] = $rr [ 'value' ];
if ( $t [ 'type' ] == 0 && $rel -> num_rows == 1 ){
if ( abs ( $rr [ 'value' ]) == abs ( $r [ 'value' ])){
if ( $r [ 'value' ] > 0 ){
$rr [ 'value' ] = abs ( $rr [ 'value' ]);
} else {
$v = - 1 * abs ( $rr [ 'value' ]);
$rr [ 'value' ] = $v ;
}
}
} else {
if ( abs ( $rr [ 'value' ]) == abs ( $r [ 'value' ])){
if ( $r [ 'value' ] > 0 ){
$rr [ 'value' ] = abs ( $rr [ 'value' ]);
} else {
$v = - 1 * abs ( $rr [ 'value' ]);
$rr [ 'value' ] = $v ;
}
} else {
if ( $r [ 'value' ] > 0 ){
$rr [ 'value' ] = abs ( $rr [ 'value' ]);
}
}
}
$tmp [ 'settled_with' ][] = $tmp2 ;
$total_settled += floatval ( $rr [ 'value' ]);
}
2025-05-12 15:44:39 +00:00
2025-08-26 12:16:05 +02:00
//date comparsion
if ( $r [ 'settled' ] == '1' ) {
$d1 = new DateTime ( $r [ 'register_date' ]);
$d2 = new DateTime ( $change_date );
if ( $d1 < $d2 )
$total_settled = $r [ 'value' ];
} else $r [ 'settled' ] = '0' ; //prevent null
$tmp [ 'document_no' ] = '<a href="index.php?module=EcmTransactions&action=DetailView&record=' . $r [ 'id' ] . '" traget="new">' . $r [ 'name' ] . '</a>' ;
$tmp [ 'total' ] = format_number ( $r [ 'value' ]);
$tmp [ 'settled' ] = format_number ( $total_settled );
if ( $r [ 'settled' ] == 1 ){
$tmp [ 'unsettled' ] = unsettledFormatValue ( $total_settled , $r [ 'value' ]);
$total_winien += floatval ( unsettledValue ( $total_settled , $r [ 'value' ]));
} else {
$tmp [ 'unsettled' ] = format_number ( $r [ 'value' ] - $total_settled );
$total_winien += floatval ( $r [ 'value' ] - $total_settled );
2025-08-26 11:16:43 +02:00
}
2025-08-26 12:16:05 +02:00
$tmp [ 'id' ] = $r [ 'id' ];
$tmp [ 'note' ] = $r [ 'note' ];
$tmp [ 'note_id' ] = $r [ 'note_id' ];
$tmp [ 'is_settled' ] = $r [ 'settled' ];
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
}
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
$res = $db -> query ( $query_ma );
$ma = array ();
$total_ma = 0 ;
while ( $r = $db -> fetchByAssoc ( $res )) {
$tmp = array ();
$tmp [ 'settled_with' ] = array ();
$total_settled = 0 ;
$rel = $db -> query ( " SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id=' " . $r [ 'id' ] . " ' OR ecmtransaction_b_id=' " . $r [ 'id' ] . " ' " );
while ( $rr = $db -> fetchByAssoc ( $rel )) {
if ( $rr [ 'ecmtransaction_a_id' ] == $r [ 'id' ])
$rel_id = $rr [ 'ecmtransaction_b_id' ];
else
$rel_id = $rr [ 'ecmtransaction_a_id' ];
$t = $db -> fetchByAssoc ( $db -> query ( " SELECT * FROM ecmtransactions WHERE id=' $rel_id ' " ));
$tmp2 = array ();
$tmp2 [ 'name' ] = $t [ 'name' ];
$tmp2 [ 'trans_id' ] = $t [ 'id' ];
$tmp2 [ 'value' ] = $rr [ 'value' ];
if ( $t [ 'type' ] == 0 && $rel -> num_rows == 1 ){
if ( abs ( $rr [ 'value' ]) == abs ( $r [ 'value' ])){
if ( $r [ 'value' ] > 0 ){
$rr [ 'value' ] = abs ( $rr [ 'value' ]);
} else {
$v = - 1 * abs ( $rr [ 'value' ]);
$rr [ 'value' ] = $v ;
}
}
2025-08-26 11:16:43 +02:00
}
2025-08-26 12:16:05 +02:00
$tmp [ 'settled_with' ][] = $tmp2 ;
$total_settled += floatval ( $rr [ 'value' ]);
2025-08-26 11:16:43 +02:00
}
2025-08-26 12:03:57 +02:00
2025-05-12 15:44:39 +00:00
2025-08-26 12:16:05 +02:00
//date comparsion
if ( $r [ 'settled' ] == '1' ) {
$d1 = new DateTime ( $r [ 'register_date' ]);
$d2 = new DateTime ( $change_date );
if ( $d1 < $d2 )
$total_settled = $r [ 'value' ];
} else $r [ 'settled' ] = '0' ; //prevent null
$tmp [ 'name' ] = '<a href="index.php?module=EcmTransactions&action=DetailView&record=' . $r [ 'id' ] . '" traget="new">' . $r [ 'name' ] . '</a>' ;
$tmp [ 'total' ] = format_number ( $r [ 'value' ]);
$tmp [ 'settled' ] = format_number ( $total_settled );
if ( $r [ 'settled' ] == 1 ){
$tmp [ 'unsettled' ] = unsettledFormatValue ( $total_settled , $r [ 'value' ]);
$total_winien += floatval ( unsettledValue ( $total_settled , $r [ 'value' ]));
//$tmp['unsettled'] = format_number(abs($r['value'])-$total_settled); echo 'rozliczone';
} else {
$tmp [ 'unsettled' ] = format_number ( $r [ 'value' ] - $total_settled );
$total_winien += floatval ( $r [ 'value' ] - $total_settled );
}
$tmp [ 'is_settled' ] = $r [ 'settled' ];
$tmp [ 'id' ] = $r [ 'id' ];
$ma [] = $tmp ;
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
//$total_ma+=floatval($r['value']);
2025-08-26 10:42:45 +02:00
}
2025-08-26 12:16:05 +02:00
return $total_ma - $total_winien ;
}
function unsettledFormatValue ( $settled , $val ){
if ( $settled < 0 && $val > 0 ){
return format_number ( $val + $settled );
2025-08-26 10:42:45 +02:00
}
2025-08-26 12:16:05 +02:00
if ( $settled < 0 && $val < 0 ){
return format_number ( $val + abs ( $settled ));
}
if ( $settled > 0 && $val > 0 ){
return format_number ( $val - abs ( $settled ));
}
if ( $settled > 0 && $val < 0 ){
return format_number ( $val + $settled );
}
}
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
function unsettledValue ( $settled , $val ){
if ( $settled < 0 && $val > 0 ){
return ( $val + $settled );
}
if ( $settled < 0 && $val < 0 ){
return ( $val + abs ( $settled ));
}
if ( $settled > 0 && $val > 0 ){
return ( $val - abs ( $settled ));
}
if ( $settled > 0 && $val < 0 ){
return ( $val + $settled );
2025-08-26 10:42:45 +02:00
}
2025-08-26 11:16:43 +02:00
}
2025-08-26 12:16:05 +02:00
function getData ( $id , $expired ) {
$db = $GLOBALS [ 'db' ];
2025-08-26 11:16:43 +02:00
2025-08-26 12:16:05 +02:00
$saldo = false ;
$settled = " t.settled!='1' AND " ;
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
switch ( $expired ) {
case 0 :
$payment_date = " 1=1 " ;
break ;
case 1 :
$date = new DateTime ( date ( " Y-m-d " ) );
$d = $date -> format ( 'Y-m-d' );
$payment_date = " payment_date <= ' $d ' " ;
$saldo = true ;
break ;
case 2 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-30 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date > ' $d_f ' AND payment_date < ' $d_t ' " ;
break ;
case 3 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$date_to -> modify ( '-31 days' );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-60 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date > ' $d_f ' AND payment_date < ' $d_t ' " ;
break ;
case 4 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$date_to -> modify ( '-61 days' );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-90 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date > ' $d_f ' AND payment_date < ' $d_t ' " ;
break ;
case 5 :
$date_to = new DateTime ( date ( " Y-m-d " ) );
$date_to -> modify ( '-91 days' );
$d_t = $date_to -> format ( 'Y-m-d' );
$date_from = new DateTime ( date ( " Y-m-d " ) );
$date_from -> modify ( '-180 days' );
$d_f = $date_from -> format ( 'Y-m-d' );
$payment_date = " payment_date > ' $d_f ' AND payment_date < ' $d_t ' " ;
break ;
case 6 :
$date = new DateTime ( date ( " Y-m-d " ) );
$date -> modify ( '-181 days' );
$d = $date -> format ( 'Y-m-d' );
$payment_date = " payment_date < ' $d ' " ;
break ;
case 7 :
$date = new DateTime ( date ( " Y-m-d " ) );
$d = $date -> format ( 'Y-m-d' );
$payment_date = " payment_date >= ' $d ' " ;
break ;
case 8 :
$payment_date = " 1=1 " ;
$saldo = true ;
$settled = " 1=1 and " ;
break ;
case 9 :
$date = new DateTime ( date ( " Y-m-d " ) );
$d = $date -> format ( 'Y-m-d' );
$payment_date = " payment_date <= ' $d ' " ;
$settled = " 1=1 AND " ;
$saldo = true ;
break ;
2025-08-26 10:42:45 +02:00
}
2025-08-26 12:03:57 +02:00
2025-08-26 12:16:05 +02:00
//start WINIEN
$r = $db -> fetchByAssoc ( $db -> query ( "
SELECT
sum (
t . value
) AS sum
FROM ecmtransactions AS t
WHERE
t . parent_id = '$id' AND
t . deleted = '0' AND
" . $settled . "
t . type = '1' AND
" . $payment_date . "
" ) );
//get part settled transactions
/*
if ( ! $saldo ){
$s = $db -> fetchByAssoc ( $db -> query ( "
SELECT
sum (
CASE WHEN t . currency_id = 'PLN' THEN t . value
ELSE t . value * t . currency_value
END
) AS sum
FROM ecmtransactions AS t
WHERE
t . parent_id = '$id' AND
t . deleted = '0' AND
" . $settled . "
t . type = '0' AND
t . register_date > '2011-12-31' AND
" . $payment_date . "
" ));
2025-08-26 12:03:57 +02:00
2025-08-26 10:42:45 +02:00
}
2025-08-26 12:16:05 +02:00
*/
if ( ! $saldo ){
return $r [ 'sum' ];
}
if ( ! is_numeric ( $r [ 'sum' ] ))
$r [ 'sum' ] = 0 ;
if ( ! is_numeric ( $s [ 'settled' ] ))
$s [ 'settled' ] = 0 ;
if ( floatval ( $s [ 'settled' ]) > 0 )
$r [ 'sum' ] = floatval ( $r [ 'sum' ]) - floatval ( $s [ 'settled' ]);
$sum = $r [ 'sum' ];
//END WINIEN
$r [ 'sum' ] = 0 ;
if ( $saldo ) {
$r = $db -> fetchByAssoc ( $db -> query ( "
SELECT
sum (
t . value
) AS sum
FROM ecmtransactions AS t
WHERE
t . parent_id = '$id' AND
t . deleted = '0' AND
" . $settled . "
t . type = '0' AND
" . $payment_date . "
" ) );
}
$res = $sum - $r [ 'sum' ];
if ( $expired == 1 && $res > 0 ){
return 0 ;
}
//END MA
return $res ;
2025-08-26 10:42:45 +02:00
}
2025-08-26 12:16:05 +02:00
// sort comparing functions
2025-08-26 12:03:57 +02:00
function cmpUnsettled ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'unsettled' ] == $b [ 'unsettled' ]) {
return 0 ;
}
return ( $a [ 'unsettled' ] < $b [ 'unsettled' ]) ? - 1 : 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpUnsettledDesc ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'unsettled' ] == $b [ 'unsettled' ]) {
return 0 ;
}
return ( $a [ 'unsettled' ] < $b [ 'unsettled' ]) ? 1 : - 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpNotOverdue ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'not_overdue' ] == $b [ 'not_overdue' ]) {
return 0 ;
}
return ( $a [ 'not_overdue' ] < $b [ 'not_overdue' ]) ? - 1 : 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpNotOverdueDesc ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'not_overdue' ] == $b [ 'not_overdue' ]) {
return 0 ;
}
return ( $a [ 'not_overdue' ] < $b [ 'not_overdue' ]) ? 1 : - 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpOverdue ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'overdue' ] == $b [ 'overdue' ]) {
return 0 ;
}
return ( $a [ 'overdue' ] < $b [ 'overdue' ]) ? - 1 : 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpOverdueDesc ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'overdue' ] == $b [ 'overdue' ]) {
return 0 ;
}
return ( $a [ 'overdue' ] < $b [ 'overdue' ]) ? 1 : - 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpAccount ( $a , $b ) {
2025-08-26 12:16:05 +02:00
return strnatcmp ( $a [ 'name' ], $b [ 'name' ] );
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpAccountDesc ( $a , $b ) {
2025-08-26 12:16:05 +02:00
return - 1 * strnatcmp ( $a [ 'name' ], $b [ 'name' ] );
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpSaldo ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'saldo' ] == $b [ 'saldo' ]) {
return 0 ;
}
return ( $a [ 'saldo' ] < $b [ 'saldo' ]) ? - 1 : 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpSaldoDesc ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'saldo' ] == $b [ 'saldo' ]) {
return 0 ;
}
return ( $a [ 'saldo' ] < $b [ 'saldo' ]) ? 1 : - 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpTodaySaldo ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'today_saldo' ] == $b [ 'today_saldo' ]) {
return 0 ;
}
return ( $a [ 'today_saldo' ] < $b [ 'today_saldo' ]) ? - 1 : 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:03:57 +02:00
function cmpTodaySaldoDesc ( $a , $b ) {
2025-08-26 12:16:05 +02:00
if ( $a [ 'today_saldo' ] == $b [ 'today_saldo' ]) {
return 0 ;
}
return ( $a [ 'today_saldo' ] < $b [ 'today_saldo' ]) ? 1 : - 1 ;
2025-05-12 15:44:39 +00:00
}
2025-08-26 12:16:05 +02:00
?>