assign ( "MOD", $mod_strings ); global $app_strings; $ss->assign ( "APP", $app_strings ); //var_dump($app_strings); //brak kontrahenta, tylko wyszukiwanie if (!$account_id || $account_id=='') { echo $ss->display ( 'modules/EcmPaymentStates/tpls/AccountPaymentStates.tpl' ); return; } $a = new Account(); $a->retrieve($account_id); global $timedate; $query_w=''; $query_ma=''; $label='Wszystkie'; if($_REQUEST['switch_show']=='')$_REQUEST['switch_show']=3; switch ($_REQUEST['switch_show']){ case 1: $query_w=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='0' ORDER BY payment_date desc"; $query_ma=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='1' ORDER BY payment_date desc"; $label='Wszystkie'; break; case 2: $query_w=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='0' AND (SELECT count(*) FROM ecmtransactions_rel WHERE ecmtransaction_a_id=ecmtransactions.id OR ecmtransaction_b_id=ecmtransactions.id)>0 ORDER BY payment_date desc"; $query_ma=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='1' AND (SELECT count(*) FROM ecmtransactions_rel WHERE ecmtransaction_a_id=ecmtransactions.id OR ecmtransaction_b_id=ecmtransactions.id)>0 ORDER BY payment_date desc"; $label='Rozliczone'; break; case 3: $query_w=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='0' AND (settled='0' or settled=null) ORDER BY payment_date desc"; $query_ma=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='1' AND (settled='0' or settled=null) ORDER BY payment_date desc"; $label='Nierozliczone'; break; case 4: $query_w=" SELECT t.* FROM ecmtransactions t inner join ecmtransactions_rel r on r.ecmtransaction_a_id=t.id inner join ecmtransactions t2 on t2.id=r.ecmtransaction_b_id WHERE t.parent_id='".$a->id."' AND t.type='0' and t.settled=1 and t.payment_date < t2.payment_date ORDER BY t.payment_date desc"; $query_ma=" SELECT t.* FROM ecmtransactions t inner join ecmtransactions_rel r on r.ecmtransaction_b_id=t.id inner join ecmtransactions t2 on t2.id=r.ecmtransaction_a_id WHERE t.parent_id='".$a->id."' AND t.type='1' and t.settled=1 and t.payment_date>t2.payment_date group by t.id ORDER BY t.payment_date desc"; $label='Rozliczone po terminie'; break; case 5: $query_w=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='0' AND (settled='0' OR settled IS NULL) and payment_date < '".date("Y-m-d")."' ORDER BY payment_date desc"; $query_ma=" SELECT * FROM ecmtransactions WHERE deleted='0' AND parent_id='".$a->id."' AND type='1' AND (settled='0' OR settled IS NULL) and payment_date < '".date("Y-m-d")."' ORDER BY payment_date desc"; $label='Nierozliczone po terminie'; break; } $res = $db->query($query_w); $total_winien = 0; $winien = array(); $totals_w['wartosc']=0; $totals_w['roz']=0; $totals_w['nie']=0; while ($r = $db->fetchByAssoc($res)) { $tmp = array(); $tmp['settled_with'] = array(); $total_settled = 0; if($umowa_id!=''){ if($r['record_id']!=$umowa_id){ if($r['record_type']=='EcmInvoiceOuts'){ $m= new EcmInvoiceOut(); $m->retrieve($r['record_id']); if($m->ecmagreement_id!=$umowa_id){ continue; } } else { $rel = $db->query("SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id='".$r['id']."' OR ecmtransaction_b_id='".$r['id']."'"); $skip=true; 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'")); if($t['record_type']=='EcmInvoiceOuts'){ $m= new EcmInvoiceOut(); $m->retrieve($t['record_id']); if($m->ecmagreement_id==$umowa_id){ $skip==false; } } else { if($t['record_id']==$umowa_id){ $skip=false; } } } if($skip==true){ continue; } } } } $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 { $rr['value']=abs($rr['value']); } } 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']); } //date comparsion if ($r['settled'] == '1') { if($total_settled==0){ $total_settled=$r['value']; } } else $r['settled'] = '0'; //prevent null $tmp['register_date'] = $timedate->to_display_date($r['payment_date']); if($r['record_type']!=''){ $module=substr($r['record_type'],0,strlen($r['record_type'])-1); $m = new $module(); $m->retrieve($r['record_id']); $add=' z dnia '.date('d.m.Y',strtotime($m->register_date)); } else { $add=''; } $tmp['document_no'] = ''.$r['name'].' '.$add.''; $tmp['total'] = format_number($r['value']); $tmp['settled'] = format_number($total_settled); $totals_w['wartosc']+=$r['value']; $totals_w['roz']+=$total_settled; $totals_w['nie']+=floatval(unsettledValue($total_settled,$r['value'])); if($r['settled']==1){ if($_REQUEST['switch_show']==1){ $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_winien+=floatval($r['value']); } else { $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_winien+=floatval(unsettledValue($total_settled,$r['value'])); } }else{ if($_REQUEST['switch_show']==1){ $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_winien+=floatval($r['value']); } else { $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_winien+=floatval(unsettledValue($total_settled,$r['value'])); } } $tmp['id'] = $r['id']; $tmp['sort_date']=date('Ymd',strtotime($r['payment_date'])); $tmp['note']= $r['note']; $tmp['type']='0'; $tmp['note_id']= $r['note_id']; $tmp['is_settled'] = $r['settled']; $winien[] = $tmp; } $totals_m['wartosc']=0; $totals_m['roz']=0; $totals_m['nie']=0; $ss -> assign('WINIEN', $winien); $res = $db->query($query_ma); $ma = array(); $total_ma = 0; while ($r = $db->fetchByAssoc($res)) { $tmp = array(); $tmp['settled_with'] = array(); $total_settled = 0; if($umowa_id!=''){ if($r['record_id']!=$umowa_id){ if($r['record_type']=='EcmInvoiceOuts'){ $m= new EcmInvoiceOut(); $m->retrieve($r['record_id']); if($m->ecmagreement_id!=$umowa_id){ continue; } } else { $rel = $db->query("SELECT * FROM ecmtransactions_rel WHERE ecmtransaction_a_id='".$r['id']."' OR ecmtransaction_b_id='".$r['id']."'"); $skip=true; 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'")); if($t['record_type']=='EcmInvoiceOuts'){ $m= new EcmInvoiceOut(); $m->retrieve($t['record_id']); if($m->ecmagreement_id==$umowa_id){ $skip==false; } } else { if($t['record_id']==$umowa_id){ $skip=false; } } } if($skip==true){ continue; } } } } $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 { $rr['value']=abs($rr['value']); } $tmp['settled_with'][] = $tmp2; $total_settled+=floatval($rr['value']); } //date comparsion if ($r['settled'] == '1') { if($total_settled==0){ $total_settled=$r['value']; } } else $r['settled'] = '0'; //prevent null $tmp['register_date'] = $timedate->to_display_date($r['payment_date']); if($r['record_type']!=''){ $module=substr($r['record_type'],0,strlen($r['record_type'])-1); $m = new $module(); $m->retrieve($r['record_id']); if($m->register_date!=""){ $add=' z dnia '.date('d.m.Y',strtotime($m->register_date)); } else { if($m->document_date!=""){ $add=' z dnia '.date('d.m.Y',strtotime($m->document_date)); } } } else { $add=''; } $tmp['sort_date']=date('Ymd',strtotime($r['payment_date'])); $tmp['name'] = ''.$r['name'].' '.$add.''; $tmp['total'] = format_number($r['value']); $tmp['settled'] = format_number($total_settled); $totals_m['wartosc']+=$r['value']; $totals_m['roz']+=$total_settled; $totals_m['nie']+=floatval(unsettledValue($total_settled,$r['value'])); if($r['settled']==1){ if($_REQUEST['switch_show']==1){ $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_ma+=floatval($r['value']); } else { $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_ma+=floatval(unsettledValue($total_settled,$r['value'])); } //$tmp['unsettled'] = format_number(abs($r['value'])-$total_settled); echo 'rozliczone'; }else{ if($_REQUEST['switch_show']==1){ $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_ma+=floatval($r['value']); } else { $tmp['unsettled'] = unsettledFormatValue($total_settled,$r['value']); $total_ma+=floatval(unsettledValue($total_settled,$r['value'])); } } $tmp['is_settled'] = $r['settled']; $tmp['type']='1'; $tmp['id'] = $r['id']; $ma[] = $tmp; //$total_ma+=floatval($r['value']); } $sea = new SugarEmailAddress; // Grab the array of addresses $emails = $sea->getAddressesByGUID( $account_id, 'Accounts'); $ss -> assign('MA', $ma); $sum = array(); $sum['WINIEN'] = format_number($total_winien); $sum['MA'] = format_number($total_ma); $sum['SALDO'] = format_number($total_ma-$total_winien); $ss->assign('SUM', $sum); //$ss->assign('EMAILLIST',getEmails($account_id)); $ss->assign('umowy',getAgreements($account_id)); $ss->assign('umowa_sel',$umowa_id); $ss->assign('SWITCH_SHOW', $_REQUEST['switch_show']); $ss->assign('PROCESS', '1'); $c = new EcmSysInfo(); $ss->assign("number",$a->phone_office); $ss->assign('CURRENT_COMPANY', $c->getShortName()); $ss->assign('ACCOUNT', array('ID'=>$account_id, 'NAME'=>$a->name)); $ss->assign('EMAILLIST',$emails); $ss->assign("system_name",$c->getShortName()); if( $_REQUEST['toPDF'] == '1' ) { $info = new EcmSysInfo(); $all_transactions=array_merge($ma,$winien); $all_transactions=array_sort_by_key($all_transactions,'sort_date',SORT_ASC); $ss->assign('transactions',$all_transactions); $ss->assign('totals_w',$totals_w); $ss->assign('totals_m',$totals_m); $ss->assign('saldo',$totals_m['wartosc']-$totals_w['wartosc']); $output = $ss->fetch( 'modules/EcmPaymentStates/tpls/PDF/AccountPaymentStatespdf.tpl' ); include_once ("include/MPDF60/mpdf60/mpdf.php"); unset($smarty); $p = new mPDF ( '', 'A4', null, 'helvetica', 10, 10, 25, 10, 5, 5 ); $p->setFooter('Strona {PAGENO} z {nbpg}'); $p->SetHTMLHeader('

'.$info->getName().'
Kontrahent: '.$a->name.'
Rozrachunki: '.$label.'
Data wydruku: '.date("d.m.Y").'
Strona {PAGENO} z {nbpg}

'); //$p->setTitle($mod_strings["LBL_REPORT_STOCKS_DOCS"]); //echo $output; $p->writeHTML( $output ); $p->Output (); } else { echo $ss->display ( 'modules/EcmPaymentStates/tpls/AccountPaymentStates.tpl' ); } unset($a); function array_sort_by_key($array, $on, $order=SORT_ASC) { $new_array = array(); $sortable_array = array(); if (count($array) > 0) { foreach ($array as $k => $v) { if (is_array($v)) { foreach ($v as $k2 => $v2) { if ($k2 == $on) { $sortable_array[$k] = $v2; } } } else { $sortable_array[$k] = $v; } } switch ($order) { case SORT_ASC: asort($sortable_array); break; case SORT_DESC: arsort($sortable_array); break; } foreach ($sortable_array as $k => $v) { $new_array[$k] = $array[$k]; } } return $new_array; } function unsettledFormatValue($settled,$val){ if($settled<0 && $val>0){ return format_number($val+$settled); } 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); } if($settled==0 && $val<0){ return format_number($val); } if($settled==0 && $val>0){ return format_number($val); } } function getAgreements($id){ $db=$GLOBALS['db']; $zap="select id,document_no from ecmagreements where parent_id='".$id."' and deleted=0"; $res=$db->query($zap); $as=array(); while($dane=$db->fetchByAssoc($res)){ $as[]=$dane; } return $as; } 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); } return $val; } function getEmails ($id) { $sea = new SugarEmailAddress(); $addresses = $sea->getAddressesByGUID($id, 'Accounts'); $return = array(); foreach ($addresses as $address) { if ($address['email_address'] != '' && $address['opt_out'] == 1) { $return[] = $address['email_address']; } } return $return; }