Files
2024-04-27 09:23:34 +02:00

473 lines
15 KiB
PHP

<?php
if(!defined('sugarEntry') || !sugarEntry) die('-1');
if (!$_POST['job'] || $_POST['job']=='') die ('-1');
switch ($_POST['job']) {
case 'getTransaction': getTransaction($_POST['id']); break;
case 'createRelation': createRelation($_POST['id'], $_POST['value'], $_POST['payment']); break;
case 'getDetails': getDetails($_POST['id']); break;
case 'getRangeTransactions' : getRangeTransactions($_POST['parent_id'],$_POST['date_start'],$_POST['date_end'],$_POST['type']); break;
case 'createMonit': createMonit($_POST['ids'],$_POST['parent_id']); break;
case 'sendNote': sendNote($_POST['ids'],$_POST['parent_id']); break;
case 'searchBadTransactions': searchBadTransactions($_POST['parent_id']); break;
}
function getRangeTransactions($parent_id,$date_start,$date_end,$type){
$db=$GLOBALS['db'];
if($date_start==181 && $date_end==0){
$date_to = new DateTime ( date ( "Y-m-d" ) );
$date_to->modify ( '-'.$date_start.' days' );
$d_t = $date_to->format ( 'Y-m-d' );
$date_from = new DateTime ( date ( "Y-m-d" ) );
$date_from->modify ( '-'.$date_end.' days' );
$d_f = $date_from->format ( 'Y-m-d' );
$query="select * from ecmtransactions where parent_id='".$parent_id."' and settled=0 and payment_date <= '".$d_f."'";
} else {
$date_to = new DateTime ( date ( "Y-m-d" ) );
$date_to->modify ( '-'.$date_start.' days' );
$d_t = $date_to->format ( 'Y-m-d' );
$date_from = new DateTime ( date ( "Y-m-d" ) );
$date_from->modify ( '-'.$date_end.' days' );
$d_f = $date_from->format ( 'Y-m-d' );
$query="select * from ecmtransactions where parent_id='".$parent_id."' and settled=0 and payment_date >= '".$d_f."' and payment_date <='".$d_t."'";
}
$res=$db->query($query);
$transakcje_ma=[];
$transakcje_winien=[];
while($dane=$db->fetchByAssoc($res)){
if($dane['type']==0){
if($dane['record_type']=='EcmInvoiceOuts'){
$inv = new EcmInvoiceOut();
$inv->retrieve($dane['record_id']);
if($inv->parent_id!=$parent_id){
$dane['parent_2_id']=$inv->parent_id;
$dane['parent_2_name']=$inv->parent_name;
}
}
$transakcje_winien[]=$dane;
} else {
$transakcje_ma[]=$dane;
}
}
$ss = new Sugar_Smarty();
$ss->assign("ma", $transakcje_winien);
$ss->assign("ID", $parent_id);
$ss->assign("winien", $transakcje_ma);
$ss->assign("range", $date_end);
$ss->assign("okres", $date_start.' - '. ($date_end ==0 ? '...' : $date_end));
echo $ss->display('modules/EcmPaymentStates/tpls/AccountPaymentStatesDetail.tpl');
return true;
}
function searchBadTransactions($parent_id){
$db=$GLOBALS['db'];
# ma
$query="
SELECT
t.id,
t.name,
t.value,
t.parent_name,
t.parent_id,
sum(rel.value) as sum,
t2.parent_id,
t2.deleted
FROM
ecmtransactions t
inner join ecmtransactions_rel rel on rel.ecmtransaction_b_id=t.id
left join ecmtransactions t2 on rel.ecmtransaction_a_id=t2.id
WHERE
t.deleted = 0
AND t.register_date > '2011-12-31'
AND t.type=1 and t.parent_id='".$parent_id."' and t.settled=1
group by t.id";
$res= $db->query($query);
$ma=[];
while($dane=$db->fetchByAssoc($res)){
if($dane['deleted']==1){
$ma[$dane['id']]['id']=$dane['id'];
$ma[$dane['id']]['name']=$dane['name'];
$ma[$dane['id']]['why']='Powiązana transakcja nie istnieje';
}
if($dane['parent_id']==""){
$ma[$dane['id']]['id']=$dane['id'];
$ma[$dane['id']]['name']=$dane['name'];
$ma[$dane['id']]['why']='Powiązana transakcja nie istnieje';
}
if($dane['sum']!=$dane['value']){
$ma[$dane['id']]['id']=$dane['id'];
$ma[$dane['id']]['name']=$dane['name'];
$ma[$dane['id']]['why']='Kwoty się nie bilansują';
}
}
# winien
$query="
SELECT
t.id,
t.name,
t.value,
t.parent_name,
t.parent_id,
sum(rel.value) as sum,
t2.parent_id,
t2.deleted
FROM
ecmtransactions t
inner join ecmtransactions_rel rel on rel.ecmtransaction_a_id=t.id
left join ecmtransactions t2 on rel.ecmtransaction_b_id=t2.id
WHERE
t.deleted = 0
AND t.register_date > '2011-12-31' and t.settled=1
AND t.type=0 and t.parent_id='".$parent_id."'
group by t.id
";
$res= $db->query($query);
$winien=[];
while($dane=$db->fetchByAssoc($res)){
if($dane['deleted']==1){
$winien[$dane['id']]['id']=$dane['id'];
$winien[$dane['id']]['name']=$dane['name'];
$winien[$dane['id']]['why']='Powiązana transakcja nie istnieje';
}
if($dane['parent_id']==""){
$winien[$dane['id']]['id']=$dane['id'];
$winien[$dane['id']]['name']=$dane['name'];
$winien[$dane['id']]['why']='Powiązana transakcja nie istnieje';
}
if($dane['sum']!=$dane['value']){
$winien[$dane['id']]['id']=$dane['id'];
$winien[$dane['id']]['name']=$dane['name'];
$winien[$dane['id']]['why']='Kwoty się nie bilansują';
}
#winien 2
$query2="SELECT rel.*,t.id as ids,t.deleted from ecmtransactions_rel rel
left join ecmtransactions t on t.id=rel.ecmtransaction_b_id
where rel.ecmtransaction_a_id ='".$dane['id']."'";
$res2= $db->query($query2);
while($dane2=$db->fetchByAssoc($res2)){
if($dane2['ecmtransaction_b_id']==""){
$winien[$dane['id']]['id']=$dane['id'];
$winien[$dane['id']]['name']=$dane['name'];
$winien[$dane['id']]['why']='Powiązana transakcja nie istnieje';
}
if($dane2['deleted']!=0){
$winien[$dane['id']]['id']=$dane['id'];
$winien[$dane['id']]['name']=$dane['name'];
$winien[$dane['id']]['why']='Powiązana transakcja nie istnieje';
}
}
}
$ss = new Sugar_Smarty();
$ss->assign("winien", $winien);
$ss->assign("ma", $ma);
$ss->assign("parent_id", $parent_id);
echo $ss->display('modules/EcmPaymentStates/tpls/Detail.tpl');
return true;
}
function sendNote($ids,$parent_id){
global $current_user;
$db=$GLOBALS['db'];
$uq=$db->query("select google_login,CAST(AES_DECRYPT(google_password, 'jakistamhash123') as CHAR)
AS google_password FROM users where id='".$current_user->id."'");
$rul=$db->fetchByAssoc($uq);
if($rul['google_login']!='' && $rul['google_password']!=''){
require_once ("modules/EcmPaymentStates/createPDF.php");
require_once ("include/phpmailer/class.phpmailer.php");
require_once ("include/phpmailer/class.smtp.php");
$mailClassS = new PHPMailer ();
$mailClassS->isSMTP (); // Set mailer to use SMTP
$mailClassS->Host = 'smtp.gmail.com'; // Specify main and backup server
$mailClassS->SMTPAuth = true; // Enable SMTP authentication
$mailClassS->Username = $rul['google_login']; // SMTP username
$mailClassS->Password = $rul['google_password']; // SMTP password
$mailClassS->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mailClassS->Port = 587; // Set the SMTP port number - 587 for
// get email from accounts
$sea = new SugarEmailAddress;
// Grab the array of addresses
$addresses = $sea->getAddressesByGUID($parent_id, 'Accounts');
foreach ( $addresses as $address ) {
if($address['email_address']!='' && $address['opt_out']==1){
$mailClassS->addAddress ($address['email_address']); // Add address
}
}
// set sender
$mailClassS->Sender=$rul['google_login'];
$mailClassS->From =$rul['google_login'];
$mailClassS->FromName =$current_user->first_name.' '.$current_user->last_name;
$mailClassS->WordWrap = 50; // Set word wrap to 50 characters
$mailClassS->isHTML ( true ); // Set email format to HTML
$mailClassS->Subject = 'Dokument od E5 Polska sp. z o.o.';
$path=createEcmPaymentStatePdf('null','FILE','null',$ids);
$mailClassS->Body = 'Witam,<br><br>Nota odsetkowa';
// załącznik
if(file_exists('/var/www/html/crm/'.$path)){
$mailClassS->addAttachment($path);
}
// Read an HTML message body from an external file, convert
// referenced images to embedded,
// convert HTML into a basic plain-text alternative body
// $mailClassS->msgHTML(file_get_contents('contents.html'),
// dirname(__FILE__));
if(count($mailClassS->to)>0){
if (! $mailClassS->send ()) {
unlink('/var/www/html/crm/'.$path);
echo '-1';
} else {
unlink('/var/www/html/crm/'.$path);
echo '1';
}
} else {
echo '-1';
}
} else {
echo '-1';
}
}
function createMonit($ids,$parent_id){
//ini_set('display_errors',1);
include 'modules/EcmPaymentStates/interestModel.php';
$m= new interestModel();
global $current_user;
$db=$GLOBALS['db'];
$uq=$db->query("select google_login,CAST(AES_DECRYPT(google_password, 'jakistamhash123') as CHAR)
AS google_password FROM users where id='".$current_user->id."'");
$rul=$db->fetchByAssoc($uq);
if($rul['google_login']!='' && $rul['google_password']!=''){
// require_once ("modules/EcmPaymentStates/createPDF.php");
require_once ("include/phpmailer/class.phpmailer.php");
require_once ("include/phpmailer/class.smtp.php");
$mailClassS = new PHPMailer ();
$mailClassS->isSMTP (); // Set mailer to use SMTP
$mailClassS->Host = 'smtp.gmail.com'; // Specify main and backup server
$mailClassS->SMTPAuth = true; // Enable SMTP authentication
$mailClassS->Username = $rul['google_login']; // SMTP username
$mailClassS->Password = $rul['google_password']; // SMTP password
$mailClassS->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mailClassS->Port = 587; // Set the SMTP port number - 587 for
// get email from accounts
$sea = new SugarEmailAddress;
// Grab the array of addresses
$addresses = $sea->getAddressesByGUID($parent_id, 'Accounts');
foreach ( $addresses as $address ) {
if($address['email_address']!='' && $address['opt_out']==1){
$mailClassS->addAddress ($address['email_address']); // Add address
}
}
// set sender
$mailClassS->Sender=$rul['google_login'];
$mailClassS->From =$rul['google_login'];
$mailClassS->FromName =$current_user->first_name.' '.$current_user->last_name;
$mailClassS->WordWrap = 50; // Set word wrap to 50 characters
$mailClassS->isHTML ( true ); // Set email format to HTML
$mailClassS->Subject = 'Dokument od E5 Polska sp. z o.o.';
$mailClassS->Body = 'Witam,<br><br>Przypominamy o zaległości, w załączniku z znajduje się wezwanie do zapłaty';
// załącznik
$path=$m->makeMonit($ids);
if(file_exists('/var/www/html/crm/'.$path)){
$mailClassS->addAttachment($path);
}
// Read an HTML message body from an external file, convert
// referenced images to embedded,
// convert HTML into a basic plain-text alternative body
// $mailClassS->msgHTML(file_get_contents('contents.html'),
// dirname(__FILE__));
if(count($mailClassS->to)>0){
if (! $mailClassS->send ()) {
unlink('/var/www/html/crm/'.$path);
echo '-1';
} else {
unlink('/var/www/html/crm/'.$path);
echo '1';
}
} else {
echo '-1';
}
} else {
echo '-1';
}
}
function getTransaction($id) {
if (!$id || $id == '') die('-1');
$db = $GLOBALS['db'];
$res = $db->fetchByAssoc($db->query("
SELECT t.id,t.name, t.value, sum(rel.value) as settled FROM ecmtransactions AS t
INNER JOIN ecmtransactions_rel AS rel
ON (rel.ecmtransaction_a_id=t.id OR rel.ecmtransaction_b_id=t.id)
WHERE t.id='$id'
"));
if (!$res['settled']) $res['settled'] = 0;
echo json_encode($res);
return;
}
function createRelation($id, $value, $payment) {
$db = $GLOBALS['db'];
global $current_user;
$db->query("
INSERT INTO ecmtransactions_rel VALUES (
'".create_guid()."',
'".date("Y-m-d H:i:s")."',
'".$current_user->id."',
'$id',
'$payment',
'$value'
)
");
//check is settled
//winien
$res = $db->fetchByAssoc($db->query("
SELECT (t.value-sum(rel.value)) as unsettled FROM ecmtransactions AS t
INNER JOIN ecmtransactions_rel AS rel
ON (rel.ecmtransaction_a_id=t.id OR rel.ecmtransaction_b_id=t.id)
WHERE t.id='$id'
"));
echo 'WINIEN '.$row['unsettled'].'...';
if ($res['unsettled']==0){
$t = new EcmTransaction();
$t->retrieve($id);
if($t->record_type=='Documents'){
$db->query("UPDATE documents SET status='2' WHERE id='$t->record_id'");
}
$db->query("UPDATE ecmtransactions SET settled='1' WHERE id='$id'");
}
//ma
$res = $db->fetchByAssoc($db->query("
SELECT (t.value-sum(rel.value)) as unsettled FROM ecmtransactions AS t
INNER JOIN ecmtransactions_rel AS rel
ON (rel.ecmtransaction_a_id=t.id OR rel.ecmtransaction_b_id=t.id)
WHERE t.id='$payment'
"));
echo 'MA '.$row['unsettled'].'...';
if ($res['unsettled']==0){
$t = new EcmTransaction();
$t->retrieve($payment);
if($t->record_type=='Documents'){
$db->query("UPDATE documents SET status='2' WHERE id='$t->record_id'");
$db->query("UPDATE ecmtransactions SET settled='1' WHERE id='$payment'");
}
}
echo '1';
return;
}
function getDetails($id) {
$db = $GLOBALS['db'];
$result = array();
$res = $db->query("
select t.id, t.name, rel.value from ecmtransactions_rel as rel
inner join ecmtransactions as t
on t.id = rel.ecmtransaction_a_id
where rel.ecmtransaction_b_id='$id' and t.deleted=0");
while ($row = $db->fetchByAssoc($res)) {
$row['value'] = format_number($row['value']);
$result[] = $row;
}
$res = $db->query("
select t.id, t.name, rel.value from ecmtransactions_rel as rel
inner join ecmtransactions as t
on t.id = rel.ecmtransaction_b_id
where rel.ecmtransaction_a_id='$id' and t.deleted=0");
while ($row = $db->fetchByAssoc($res)) {
$row['value'] = format_number($row['value']);
$result[] = $row;
}
$ss = new Sugar_Smarty();
$ss->assign("ID", $id);
$ss->assign("RES", $result);
echo $ss->display('modules/EcmPaymentStates/tpls/AccountPaymentStatesDetail.tpl');
return true;
}