Files
2025-05-12 15:44:39 +00:00

658 lines
20 KiB
PHP
Executable File

<?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 'createRelationM': createRelationM($_POST['id'], $_POST['value'], $_POST['payment']); break;
case 'createRelationMany': createRelationMany($_POST['id'], $_POST['value'], $_POST['payment']); break;
case 'getDetails': getDetails($_POST['id']); break;
case 'createMonit': createMonit($_POST['ids'],$_POST['parent_id'],$_POST['email'],$_POST['text']); break;
case 'sendNote': sendNote($_POST['ids'],$_POST['parent_id']); break;
case 'sendSMS': sendSMS($_POST['number'],$_POST['content']); break;
case 'createCsvFile': createCsvFile($_POST['ids'],$_POST['bank']); break;
}
function sendSMS($number,$content){
$db=$GLOBALS['db'];
$EcmSysInfo = new EcmSysInfo();
if($EcmSysInfo->getDatabaseName() == 'saassystem'){
static $content2;
$params = array(
'username' => 'admin',
'api_key' => 'rudemodz',
'message' => $content,
'number' => $number
);
$params['message']=urldecode($content);
$params['to']=$number;
$url = 'http://damznac.pl/api/sendSms';
$c = curl_init();
curl_setopt( $c, CURLOPT_URL, $url );
curl_setopt( $c, CURLOPT_POST, true );
curl_setopt( $c, CURLOPT_POSTFIELDS, $params );
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
$content2 = curl_exec( $c );
$http_status = curl_getinfo($c, CURLINFO_HTTP_CODE);
if($http_status != 200){
echo $content2;
} else {
echo 'OK';
return;
}
curl_close( $c );
} else {
$query="select * from operating_values where value0='smsApi'";
$res=$db->query($query);
$dane= $db->fetchByAssoc($res);
static $content2;
$params = array(
'username' => $dane['value1'],
'password' => md5($dane['value2']),
'to' => '',
'from' => 'SMSAPI',
'eco' => 0,
'message' => "",
);
$params['message']=urldecode($content);
$params['to']=$number;
if($backup == true){
$url = 'https://api2.smsapi.pl/sms.do';
}else{
$url = 'https://api.smsapi.pl/sms.do';
}
$c = curl_init();
curl_setopt( $c, CURLOPT_URL, $url );
curl_setopt( $c, CURLOPT_POST, true );
curl_setopt( $c, CURLOPT_POSTFIELDS, $params );
curl_setopt( $c, CURLOPT_RETURNTRANSFER, true );
$content2 = curl_exec( $c );
$http_status = curl_getinfo($c, CURLINFO_HTTP_CODE);
if($http_status != 200 && $backup == false){
$backup = true;
sms_send($params, $backup);
}
curl_close( $c );
}
return 'ok';
}
function createCsvFile($ids,$bank){
$przelewy=array();
foreach ($ids as $id){
$t = new EcmTransaction();
$t->retrieve($id);
$a = new Account();
$a->retrieve($t->parent_id);
if($a->getFirstBankAccount()!=''){
$przelewy[$t->parent_id]['value']+=$t->value;
$przelewy[$t->parent_id]['index']=str_replace("'","",htmlspecialchars_decode($a->index_dbf));
$przelewy[$t->parent_id]['parent_name']=str_replace("'","",htmlspecialchars_decode($t->parent_name));
$przelewy[$t->parent_id]['parent_name']=str_replace('"',"",$przelewy[$t->parent_id]['parent_name']);
$przelewy[$t->parent_id]['account']=$a->getFirstBankAccount();
$przelewy[$t->parent_id]['desc'].=$t->name.', ';
}
}
getBankFormat($bank,$przelewy);
}
function removeBadChars($name){
$chars=array('/','?','-',"'",'(',')','+',',','.','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','ź','Ą','Ć','Ę','Ł','Ń','Ó','Ś','Ż','Ź'
,'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','ą','ć','ę','ł','ń','ó','ś','ż','|',' '
);
$new=array();
for($i=0;$i<strlen($name);$i++){
foreach ($chars as $char){
if($char==$name[$i]){
$new[]=$name[$i];
}
}
}
return implode('',$new);
}
function createLineBGZ($line){
$name=removeBadChars($line['parent_name']);
$title=removeBadChars($line['desc']);
$title=substr($title,0,140);
if(strlen($name)>35){
$name=substr($name,0,35);
$line=';'.str_replace(' ','',$line['account']).';'.$name.';;;;'.$title.';'.str_replace('.',',',$line['value']).PHP_EOL;
} else {
$line=';'.str_replace(' ','',$line['account']).';'.$name.';;;;'.$title.';'.str_replace('.',',',$line['value']).PHP_EOL;
}
return $line;
}
function getBankFormat($id,$data){
global $current_user;
$fp=fopen('import_'.$current_user->id.'.csv','w');
if($id==1){
foreach ($data as $key=>$val){
if($val['value']!=''){
$line=createLineBGZ($val);
fwrite($fp,$line);
}
}
}
fclose($fp);
echo json_encode('import_'.$current_user->id.'.csv');
return;
return '';
}
function createRelationMany($id){
global $current_user;
$db=$GLOBALS['db'];
$ids=explode(',',$id);
$prawa=0;
$lewa_id=array();
$prawa_id=array();
$lewa=0;
foreach ($ids as $i){
$t = new EcmTransaction();
$t->retrieve($i);
if($t->value>0){
$lewa+=$t->value;
$tmp=array();
$tmp['id']=$t->id;
$tmp['value']=$t->value;
$tmp['left']=$t->getRelations();
$tmp['used']=0;
$lewa_id[]=$tmp;
} else {
$prawa+=$t->value;
$tmp=array();
$tmp['id']=$t->id;
$tmp['value']=$t->value;
$tmp['left']=$t->getRelations();
$tmp['used']=0;
$prawa_id[]=$tmp;
}
}
foreach ($prawa_id as $p=>$v){
foreach ($lewa_id as $l=>$v2){
if($prawa_id[$p]['used']==0 && $lewa_id[$l]['used']==0){
if($prawa_id[$p]['left']+$lewa_id[$l]['left']<=0){
echo $prawa_id[$p]['left']." ".$lewa_id[$l]['left']."\n";
if(round($prawa_id[$p]['left']+$lewa_id[$l]['left'],2)==0.00){
$prawa_id[$p]['used']=1;
$db->query("update ecmtransactions set settled=1 where id='".$prawa_id[$p]['id']."'");
echo "update ecmtransactions set settled=1 where id='".$prawa_id[$p]['id']."'\n";
}
$prawa_id[$p]['left']+=$lewa_id[$l]['left'];
$lewa_id[$l]['used']=1;
echo "Po operacji ".$prawa_id[$p]['left']."\n";
$db->query("update ecmtransactions set settled=1 where id='".$lewa_id[$l]['id']."'");
echo "update ecmtransactions set settled=1 where id='".$lewa_id[$l]['id']."'\n";
echo "
INSERT INTO ecmtransactions_rel VALUES (
'".create_guid()."',
'".date("Y-m-d H:i:s")."',
'".$current_user->id."',
'".$prawa_id[$p]['id']."',
'".$lewa_id[$l]['id']."',
'".abs($lewa_id[$l]['left'])."'
)
";
$db->query("
INSERT INTO ecmtransactions_rel VALUES (
'".create_guid()."',
'".date("Y-m-d H:i:s")."',
'".$current_user->id."',
'".$prawa_id[$p]['id']."',
'".$lewa_id[$l]['id']."',
'".abs($lewa_id[$l]['left'])."'
)
");
} else {
$lewa_id[$l]['left']+=$prawa_id[$p]['left'];
$prawa_id[$p]['left']+=abs($prawa_id[$p]['left']);
echo "po : ".$prawa_id[$p]['left']." ".$lewa_id[$l]['left']."\n";
$prawa_id[$p]['used']=1;
$db->query("update ecmtransactions set settled=1 where id='".$prawa_id[$p]['id']."'");
echo "update ecmtransactions set settled=1 where id='".$prawa_id[$p]['id']."'";
echo "
INSERT INTO ecmtransactions_rel VALUES (
'".create_guid()."',
'".date("Y-m-d H:i:s")."',
'".$current_user->id."',
'".$prawa_id[$p]['id']."',
'".$lewa_id[$l]['id']."',
'".abs($prawa_id[$p]['value'])."'
)";
$db->query("
INSERT INTO ecmtransactions_rel VALUES (
'".create_guid()."',
'".date("Y-m-d H:i:s")."',
'".$current_user->id."',
'".$prawa_id[$p]['id']."',
'".$lewa_id[$l]['id']."',
'".abs($prawa_id[$p]['value'])."'
)");
continue;
}
}
}
}
}
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 Saas SystemS 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,$email_us,$text){
//ini_set('display_errors',1);
include 'modules/EcmPaymentStates/interestModel.php';
$m= new interestModel();
global $current_user;
$db=$GLOBALS['db'];
// 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
require_once('modules/EcmSysInfos/EcmSysInfo.php');
$EcmSysInfo = new EcmSysInfo();
$email=$EcmSysInfo->getEmailSettings();
$cc=explode(':',$email['value1']);
if($email['value1']!='' && $email['value2']!='' && $email['value3']!=''){
global $sugar_config,$current_user;
$mailClassS->isSMTP (); // Set mailer to use SMTP
$mailClassS->Host = $cc[0]; // Specify main and backup server
$mailClassS->SMTPAuth = true; // Enable SMTP authentication
$mailClassS->Username = $email['value2'];
$mailClassS->Password = $email['value3'];
$mailClassS->SMTPSecure = $email['value5'];; // Enable encryption, 'ssl' also accepted
$mailClassS->Port = $cc[1]; // Set the SMTP port number - 587 for
if($email['value4']!=''){
$mailClassS->Sender=$email['value4'];
$mailClassS->From =$email['value4'];
if(!empty($email['value6'])){
$mailClassS->AddReplyTo($email['value6'],$EcmSysInfo->getName());
}
} else {
$mailClassS->Sender=$email['value2'];
$mailClassS->From =$email['value2'];
if(!empty($email['value6'])){
$mailClassS->AddReplyTo($email['value6'], $EcmSysInfo->getName());
}
}
$mailClassS->FromName =$EcmSysInfo->getName();
$mailClassS->WordWrap = 50; // Set word wrap to 50 characters
} else {
global $sugar_config,$current_user;
$mailClassS->isSMTP (); // Set mailer to use SMTP
$mailClassS->Host = $sugar_config['sendMail_host']; // Specify main and backup server
$mailClassS->SMTPAuth = true; // Enable SMTP authentication
$mailClassS->Username = $sugar_config['sendMail_username'];
$mailClassS->Password = $sugar_config['sendMail_password'];
$mailClassS->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted
$mailClassS->Port = 587; // Set the SMTP port number - 587 for
$mailClassS->Sender=$sugar_config['sendMail_from'];
$mailClassS->From =$sugar_config['sendMail_from'];
$mailClassS->FromName =$EcmSysInfo->getName();
$mailClassS->WordWrap = 50; // Set word wrap to 50 characters
}
//$mailClassS->SMTPDebug=2;
// get email from accounts
$sea = new SugarEmailAddress;
// Grab the array of addresses
$addresses = $sea->getAddressesByGUID($parent_id, 'Accounts');
$found=0;
foreach( $addresses as $key=>$value){
if($value['email_address']==$email_us){
$found=1;
}
}
$email_num=count($addresses)+1;
$n='email'.$email_num;
if($found==0){
$acc= new Account ();
$acc->retrieve($parent_id);
$acc->$n=$email_us;
$acc->save();
}
// $mailClassS->addAddress ($addresses[0]['email_address']);
$mailClassS->addAddress ($email_us);
// set sender
// $mailClassS->WordWrap = 50; // Set word wrap to 50 characters
$mailClassS->isHTML ( true ); // Set email format to HTML
$mailClassS->Subject = 'Dokument od '.$EcmSysInfo->getName();
$mailClassS->Body = $text;
// załącznik
$path=$m->makeMonit($ids);
if(file_exists('/var/www/html/system/'.$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/system/'.$path);
echo '-1';
} else {
unlink('/var/www/html/system/'.$path);
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(abs(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)
$db->query("UPDATE ecmtransactions SET settled='1' WHERE id='$id'");
//ma
$res = $db->fetchByAssoc($db->query("
SELECT (t.value-sum(abs(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)
$db->query("UPDATE ecmtransactions SET settled='1' WHERE id='$payment'");
echo '1';
return;
}
function createRelationM($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
if($value>0){
$res = $db->fetchByAssoc($db->query("
SELECT (abs(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'
"));
if ($res['unsettled']==0)
$db->query("UPDATE ecmtransactions SET settled='1' WHERE id='$id'");
//ma
$res = $db->fetchByAssoc($db->query("
SELECT (abs(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)
$db->query("UPDATE ecmtransactions SET settled='1' WHERE id='$payment'");
} else {
$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'
"));
if ($res['unsettled']==0)
$db->query("UPDATE ecmtransactions SET settled='1' WHERE id='$id'");
//ma
$res = $db->fetchByAssoc($db->query("
SELECT (abs(t.value)-sum(abs(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)
$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'");
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'");
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;
}