HEX
Server: Apache
System: Linux server1.royalgt4.com 4.18.0-553.89.1.lve.el8.x86_64 #1 SMP Wed Dec 10 13:58:50 UTC 2025 x86_64
User: mostafedeg (1125)
PHP: 5.6.40
Disabled: mail,passthru,parse_ini_file,show_source,eval,assert,pcntl_exec,dl,putenv,proc_open,popen
Upload Files
File: /home/mostafedeg/public_html/erp/controllers/expenseexchange.php
<?php

//the global file operation
include("../public/impOpreation.php");
include("../library/uploadImages.php");

//Transaction
include_once("../models/sql/Transaction.class.php");

//global varable
global $showoutside;

//to check if the page from .htacess
//$showoutside = $_GET['sn'];
// get the config file
include_once("../public/config.php");

//here the db files that include in the file
include("../public/include_dao.php");

//Expenseexchange
require_once('../models/dao/ExpenseexchangeDAO.class.php');
require_once('../models/dto/Expenseexchange.class.php');
require_once('../models/mysql/ExpenseexchangeMySqlDAO.class.php');
require_once('../models/mysql/ext/ExpenseexchangeMySqlExtDAO.class.php');
//Expensestype
require_once('../models/dao/ExpensestypeDAO.class.php');
require_once('../models/dto/Expensestype.class.php');
require_once('../models/mysql/ExpensestypeMySqlDAO.class.php');
require_once('../models/mysql/ext/ExpensestypeMySqlExtDAO.class.php');


//Clientdebtchange
require_once('../models/dao/ClientdebtchangeDAO.class.php');
require_once('../models/dto/Clientdebtchange.class.php');
require_once('../models/mysql/ClientdebtchangeMySqlDAO.class.php');
require_once('../models/mysql/ext/ClientdebtchangeMySqlExtDAO.class.php');

//Supplier
require_once('../models/dao/SupplierDAO.class.php');
require_once('../models/dto/Supplier.class.php');
require_once('../models/mysql/SupplierMySqlDAO.class.php');
require_once('../models/mysql/ext/SupplierMySqlExtDAO.class.php');
//Supplierdebtchange
require_once('../models/dao/SupplierdebtchangeDAO.class.php');
require_once('../models/dto/Supplierdebtchange.class.php');
require_once('../models/mysql/SupplierdebtchangeMySqlDAO.class.php');
require_once('../models/mysql/ext/SupplierdebtchangeMySqlExtDAO.class.php');

require_once('../models/dao/ProjectDAO.class.php');
require_once('../models/dto/Project.class.php');
require_once('../models/mysql/ProjectMySqlDAO.class.php');
require_once('../models/mysql/ext/ProjectMySqlExtDAO.class.php');


require_once('../models/dao/CostcenterDAO.class.php');
require_once('../models/dto/Costcenter.class.php');
require_once('../models/mysql/CostcenterMySqlDAO.class.php');
require_once('../models/mysql/ext/CostcenterMySqlExtDAO.class.php');

//Accountstree
require_once('../models/dao/AccountstreeDAO.class.php');
require_once('../models/dto/Accountstree.class.php');
require_once('../models/mysql/AccountstreeMySqlDAO.class.php');
require_once('../models/mysql/ext/AccountstreeMySqlExtDAO.class.php');

//Client
require_once('../models/dao/ClientDAO.class.php');
require_once('../models/dto/Client.class.php');
require_once('../models/mysql/ClientMySqlDAO.class.php');
require_once('../models/mysql/ext/ClientMySqlExtDAO.class.php');



/* //bind
  require_once('../models/dao/BindDAO.class.php');
  require_once('../models/dto/Bind.class.php');
  require_once('../models/mysql/BindMySqlDAO.class.php');
  require_once('../models/mysql/ext/BindMySqlExtDAO.class.php'); */



include_once("dailyentryfun.php");
//get the do the action
$do = $_GET['do'];

$langs = $_SESSION['erp_lang'];
include_once("../views/languages/$langs/success.php");
include_once("../views/languages/$langs/error.php");

/* ======================

  Controller Name :- productCatController

  OPERTATION in Controller

  1-display add form
  2- add in productCat tble
  4-display sucess or error
  5-display show and delete
  6-delete from productCat tbl
  7-display edit
  8- update productCat tbl
  ======================== */

//here the global templates
$smarty->display("header.html");

//here goes the instances and general variables
//Expenseexchange
$expenseExchange = new Expenseexchange();
$expenseExchangeDAO = new ExpenseexchangeMySqlDAO();
$expenseExchangeEX = new ExpenseexchangeMySqlExtDAO();
//Expensestype
$expensesType = new Expensestype();
$expensesTypeDAO = new ExpensestypeMySqlDAO();
$expensesTypeEX = new ExpensestypeMySqlExtDAO();

//Client
$client = new Client();
$clientDAO = new ClientMySqlDAO();
$clientExt = new ClientMySqlExtDAO();


$Project = new Project();
$ProjectDAO = new ProjectMySqlDAO();
$ProjectEx = new ProjectMySqlExtDAO();


//Supplier
$supplier = new Supplier();
$supplierDAO = new SupplierMySqlDAO();
$supplierExt = new SupplierMySqlExtDAO();



//Supplierdebtchange
$Supplierdebtchange = new Supplierdebtchange();
$SupplierdebtchangeDAO = new SupplierdebtchangeMySqlDAO();
$SupplierdebtchangeEX = new SupplierdebtchangeMySqlExtDAO();


//Clientdebtchange
$clientDeptChange = new Clientdebtchange();
$clientDeptChangeDAO = new ClientdebtchangeMySqlDAO();
$clientDeptChangeExt = new ClientdebtchangeMySqlExtDAO();

//Costcenter
$Costcenter = new Costcenter();
$CostcenterDAO = new CostcenterMySqlDAO();
$CostcenterEx = new CostcenterMySqlExtDAO();

//Accountstree
$accountsTree = new Accountstree();
$accountsTreeDAO = new AccountstreeMySqlDAO();
$accountsTreeEX = new AccountstreeMySqlExtDAO();



//Dailyentry
$dailyEntry = new Dailyentry();
$dailyEntryDAO = new DailyentryMySqlDAO();
$dailyEntryEX = new DailyentryMySqlExtDAO();

//Dailyentrycreditor دائن
$dailyEntryCreditor = new Dailyentrycreditor();
$dailyEntryCreditorDAO = new DailyentrycreditorMySqlDAO();
$dailyEntryCreditorEX = new DailyentrycreditorMySqlExtDAO();

//Dailyentrydebtor مدين
$dailyEntryDebtor = new Dailyentrydebtor();
$dailyEntryDebtorDAO = new DailyentrydebtorMySqlDAO();
$dailyEntryDebtorEX = new DailyentrydebtorMySqlExtDAO();


$bankExt = new BankMySqlExtDAO();
$SaveExt = new SaveMySqlExtDAO();


$today = date("Y-m-d");

//check and use the condition that suite this action
##empty
if (empty($do)) {
    //here the permission check
    include_once("../public/authentication.php");
 $smarty->assign("today", $today);

    ####serial
    $serialno = getserails();
    $smarty->assign("serialno", $serialno);

    $supplierData = $supplierExt->queryAllsup();
    $smarty->assign("supplierData", $supplierData);


    $smarty->assign('searchinonesave', $_SESSION['searchinonesave']);
    if ($_SESSION['searchinonesave'] == 0) {
        if ($_SESSION['saveids'] == 0) {
              $saves = $saveDAO->queryAll();
        }else{
            $queryString = ' and saveid in (' . $_SESSION['saveids'] . ')';
            $saves = $SaveExt->queryWithConditionWithQueryString($queryString);
        }
        $smarty->assign("saves", $saves);
        $smarty->assign("saveid", $_SESSION['saveid']);
    }else{
        $smarty->assign('saves', $_SESSION['saveid']);
    }




    if ($_SESSION['bankids'] == 0) {
          $banks = $bankDAO->queryAll();
    }else{
        $queryString = ' and bankid in (' . $_SESSION['bankids'] . ')';
        $banks = $bankExt->queryWithConditionWithQueryString($queryString);
    }
    $smarty->assign("banks", $banks);
 


    // $banks = $bankDAO->queryAll();
    // $smarty->assign("banks", $banks);

    // $saves = $saveDAO->queryAll();
    // $smarty->assign("saves", $saves);

    /* $binds = $bindDAO->queryAll();
      //employeeid حط فيها اسم الموظف
      $smarty->assign("binds", $binds); */

    // $expenseType = $expensesTypeDAO->queryByCondition(0);
    // $smarty->assign("expenseType", $expenseType);
    ##########storenegative
    $smarty->assign("projectValidation", 1);
    $smarty->display("expenseexchangeview/add.html");
}
##add
elseif ($do == 'add') {
    //here the permission check
    include_once("../public/authentication.php");

    //Transaction
    $mytransactions = new Transaction();
    try {
        // here the function that do the action
        add();
        $mytransactions->commit();
        header("location:?do=sucess");
    } catch (Exception $e) {
        $mytransactions->rollback();
        header("location:?do=error");
    }
}
##show
elseif ($do == 'show') {
    //here the permission check
    include_once("../public/authentication.php");

    $smarty->assign('searchinonesave', $_SESSION['searchinonesave']);
    if ($_SESSION['searchinonesave'] == 0) {
        if ($_SESSION['saveids'] == 0) {
              $saves = $saveDAO->queryAll();
        }else{
            $queryString = ' and saveid in (' . $_SESSION['saveids'] . ')';
            $saves = $SaveExt->queryWithConditionWithQueryString($queryString);
        }
        $smarty->assign("saves", $saves);
        $smarty->assign("saveid", $_SESSION['saveid']);
    }else{
        $smarty->assign('saves', $_SESSION['saveid']);
    }



    $projectid = filter_input(INPUT_POST, "projectname");
    $saveid = filter_input(INPUT_POST, "saveid");
    $expensetype = filter_input(INPUT_POST, "expensetype");
    $serialno = filter_input(INPUT_POST, "serialno");
    $datefrom = filter_input(INPUT_POST, "datefrom");
    $dateto = filter_input(INPUT_POST, "dateto");

    $queryString = " where 1 ";
    if (isset($projectid) && !empty($projectid)) {
        $queryString .= " and expenseexchange.projectid = " . $projectid;
     }else if( $_SESSION['projectids'] != 0){
        $queryString .= ' AND expenseexchange.projectid in (' . $_SESSION['projectids'] . ')';
    }
    
    if (isset($saveid) && !empty($saveid)) {
        $queryString .= " and expenseexchange.expenseid = " . $saveid;
    }
    if (isset($expensetype) && !empty($expensetype)) {
        $queryString .= " and expenseexchange.expensetype = " . $expensetype;
    }
    if (isset($serialno) && !empty($serialno)) {
        $queryString .= " and expenseexchange.serialno = " . $serialno;
    }
    if (isset($datefrom) && !empty($datefrom)) {
        $queryString .= ' and expenseexchange.expensedate >= "' . $datefrom . '" ';
    }
    if (isset($dateto) && !empty($dateto)) {
        $queryString .= ' and expenseexchange.expensedate <= "' . $dateto . '" ';
    }
    $alldata = $expenseExchangeEX->queryAllEX($queryString);
    $total = 0;
    foreach ($alldata as $value) {
        $total += $value->thevalue;
    }
    $smarty->assign("alldata", $alldata);
    $smarty->assign("total", $total);


   



    // $expenseType = $expensesTypeDAO->queryByCondition(0);
    // $smarty->assign("expenseType", $expenseType);


    $smarty->assign("projectValidation", 1);
    $smarty->display("expenseexchangeview/show.html");
} elseif ($do == 'shownew') {
    //here the permission check
    include_once("../public/authentication.php");

    $projectid = filter_input(INPUT_GET, "proid");



    $queryString = " where 1 ";
    if (isset($projectid) && !empty($projectid)) {

        $projData = $ProjectDAO->load($projectid);
        $projname = $projData->name;
        $queryString .= " and expenseexchange.projectid = " . $projectid;
    }

    $alldata = $expenseExchangeEX->queryAllEX($queryString);
    $smarty->assign("alldata", $alldata);
    $smarty->assign("projectid", $projectid);
    $smarty->assign("projname", $projname);


    $expenseType = $expensesTypeDAO->queryByCondition(0);
    $smarty->assign("expenseType", $expenseType);


    $smarty->assign("projectValidation", 1);
    $smarty->display("expenseexchangeview/show.html");
}

##edit
elseif ($do == 'edit') {
    //here the permission check
    include_once("../public/authentication.php");
    $id = filter_input(INPUT_GET, 'id', FILTER_DEFAULT);

    $editelement = $expenseExchangeDAO->load($id);
    $editelement->allimages =  explode(',', $editelement->images);
    $smarty->assign("editelement", $editelement);


    $supplierData = $supplierExt->queryAllsup();
    $smarty->assign("supplierData", $supplierData);

    #######get project name
    $projectData = $ProjectDAO->load($editelement->projectid);
    $smarty->assign("projectData", $projectData);



    $smarty->assign('searchinonesave', $_SESSION['searchinonesave']);
    if ($_SESSION['searchinonesave'] == 0) {
        if ($_SESSION['saveids'] == 0) {
              $saves = $saveDAO->queryAll();
        }else{
            $queryString = ' and saveid in (' . $_SESSION['saveids'] . ')';
            $saves = $SaveExt->queryWithConditionWithQueryString($queryString);
        }
        $smarty->assign("saves", $saves);
        $smarty->assign("saveid", $editelement->expenseid);
    }else{
        $smarty->assign('saves', $editelement->expenseid);
    }




    if ($_SESSION['bankids'] == 0) {
          $banks = $bankDAO->queryAll();
    }else{
        $queryString = ' and bankid in (' . $_SESSION['bankids'] . ')';
        $banks = $bankExt->queryWithConditionWithQueryString($queryString);
    }
    $smarty->assign("banks", $banks);
 
 

    $expensetype = $expensesTypeDAO->load($editelement->expensetype);
    $smarty->assign("expensetype", $expensetype);


    // $banks = $bankDAO->queryAll();
    // $smarty->assign("banks", $banks);
    $bankAccounts = $bankAccountDAO->queryByBankid($editelement->expenseid);
    $smarty->assign("bankAccounts", $bankAccounts);

    // $saves = $saveDAO->queryAll();
    // $smarty->assign("saves", $saves);

    /* $binds = $bindDAO->queryAll();
      //employeeid حط فيها اسم الموظف
      $smarty->assign("binds", $binds); */

    // $expenseType = $expensesTypeDAO->queryByCondition(0);
    // $smarty->assign("expenseType", $expenseType);



    $smarty->assign("projectValidation", 1);
    $smarty->display("expenseexchangeview/edit.html");
}
##update
elseif ($do == "update") {
    //here the permission check
    include_once("../public/authentication.php");
    //Transaction
    //$mytransactions_2 = new Transaction();

    try {
        // here the function that do the action
        update();
        //$mytransactions_2->commit();
        header("location:?do=sucess");
    } catch (Exception $e) {
        echo $e;
        //$mytransactions_2->rollback();
        header("location:?do=error");
    }
}
##del
elseif ($do == 'delete') {
    include_once("../public/authentication.php");
#####var
    $id = filter_input(INPUT_GET, 'id', FILTER_DEFAULT);
//Transaction
    $mytransactions = new Transaction();
    try {
        // here the function that do the action
        ####delete
        delete($id);
        $mytransactions->commit();
        header("location:?do=sucess");
    } catch (Exception $e) {
        $mytransactions->rollback();
        header("location:?do=error");
    }
}

##sucess
elseif ($do == "sucess") {

    //here the smarty templates
    $smarty->display("succes.html");
}
##error
elseif ($do == "error") {

    //here the smarty templates
    $smarty->display("error.html");
}


//here the global templates
$smarty->display("footer.html");

/* ===============================
  function in this CONTROLLER
  ================================ */

function add($id) {
        global $clientDeptChange;
    global $clientDeptChangeDAO;
    global $expenseExchange;
    global $expenseExchangeDAO;
    global $expenseExchangeEX;
    global $accountsTreeDAO;
    global $ProjectDAO;
    global $CostcenterDAO;
    global $expensesTypeDAO;
    global $bankDAO;
    global $bankAccountDAO;
    global $saveDAO;
    global $supplierDAO;
    global $clientDAO;
    $ETFromTreeID;
    ///var
    $serialno = filter_input(INPUT_POST, 'serialno', FILTER_DEFAULT);
    $projectid = filter_input(INPUT_POST, 'projectname', FILTER_DEFAULT);
    $expensefrom = filter_input(INPUT_POST, 'expensefrom', FILTER_DEFAULT);
    $expenseexcomment = filter_input(INPUT_POST, 'expenseexcomment', FILTER_DEFAULT);
    $oldimages = filter_input(INPUT_POST, 'oldimages', FILTER_DEFAULT);
    $supplierid = filter_input(INPUT_POST, 'supplierid', FILTER_DEFAULT);
    $supervision_type = filter_input(INPUT_POST, 'supervision_type', FILTER_DEFAULT);
    $supervision_amount = filter_input(INPUT_POST, 'supervision_amount', FILTER_DEFAULT);
    $finalsupervision = filter_input(INPUT_POST, 'finalsupervision', FILTER_DEFAULT);

    if ($oldimages) {
        $images = uploadfileMultiple("images", '../upload/expenseexchange', explode(',', $oldimages));
    }else{
           $images = uploadfileMultiple("images", '../upload/expenseexchange'); 
 
    }
    if ($expensefrom == 0) {

        $expenseid = filter_input(INPUT_POST, 'saveid', FILTER_DEFAULT);
        $expenseid2 = 0;

        $EFrom = $saveDAO->load($expenseid);
        $ETFromTreeID = $EFrom->treeId;
        if ($ETFromTreeID < 1) {
            $ETFromTreeID = addTreeElement($EFrom->savename, 40, 3, 0, 1, '', 0, 0);
        }
    } elseif ($expensefrom == 1) {
        $expenseid = filter_input(INPUT_POST, 'bankid', FILTER_DEFAULT);
        $expenseid2 = filter_input(INPUT_POST, 'bankaccountid', FILTER_DEFAULT);

        $EFrom = $bankAccountDAO->load($expenseid2);
        $ETFromTreeID = $EFrom->treeId;
        if (count($ETTreeData) == 0) {
            //we dont add banks to tree now
            $bankData = $bankDAO->load($expenseid);
//            $bankTreeData = $accountsTreeDAO->queryByName($bankData->bankname);
//            if (count($bankTreeData) == 0) {
//                $bankTreeId = addTreeElement($bankData->bankname, 21, 3, 0, 0, '', 0, 0);
//            } else {
//                $bankTreeId = $bankTreeData[0]->id;
//            }
//            $ETFromTreeID = addTreeElement($EFrom->accountname, $bankTreeId, 3, 0, 1, '', 0, 0);
            $ETFromTreeID = addTreeElement("$EFrom->accountname / $bankData->bankname", 38, 3, 0, 1, '', 0, 0);
        }
    } elseif ($expensefrom == 2) {
        $expenseid = filter_input(INPUT_POST, 'ohadid', FILTER_DEFAULT);
        $expenseid2 = 0;

        /* $EFrom = $saveDAO->load($expenseid);
          $ETTreeData = $accountsTreeDAO->queryByName($EFrom->savename);
          $ETFromTreeID = $ETTreeData[0]->id; */
    }
    $expensetype = filter_input(INPUT_POST, 'expensetype', FILTER_DEFAULT);
    $thevalue = filter_input(INPUT_POST, 'thevalue', FILTER_DEFAULT);
    $expensedate = filter_input(INPUT_POST, 'expensedate', FILTER_DEFAULT);

    #######get costcenter id
    $projectData = $ProjectDAO->load($projectid);
    $projectName = $projectData->name;

    $costcenterid = 0;
    $costCenter = $CostcenterDAO->queryByName($projectName);
    if (count($costCenter) > 0) {
        $costcenterid = $costCenter[0]->id;
    }

    ##make daily entry
    $ET = $expensesTypeDAO->load($expensetype);
    $ETTreeID = $ET->treeId;
    // if (count($ETTreeData) == 0) {
    //     $ETTreeID = addTreeElement($ET->expensestypename, 96, 3, 0, 0, '', 0, 0);
    // }




    #####insert in dataentry
    // $entryid = entryinsert_data($thevalue, $ETTreeID, $ETFromTreeID, $costcenterid, 12);


    $expenseExchange->serialno = $serialno;
    $expenseExchange->projectid = $projectid;
    $expenseExchange->expensefrom = $expensefrom;
    $expenseExchange->expenseid = $expenseid;
    $expenseExchange->expenseid2 = $expenseid2;
    $expenseExchange->thevalue = $thevalue;
    $expenseExchange->costcenterid = $costcenterid;
    $expenseExchange->expensedate = $expensedate;
    $expenseExchange->expensetype = $expensetype;
    $expenseExchange->userid = $_SESSION['userid'];
    $expenseExchange->del = 0;
    $expenseExchange->sysdate = date('Y-m-d');
    $expenseExchange->entryid = 158;
    $expenseExchange->expenseexcomment = $expenseexcomment;
    $expenseExchange->images = implode(',', $images);
    $expenseExchange->supplierid = $supplierid;
    $expenseExchange->supervision_type = $supervision_type;
    $expenseExchange->supervision_amount = $supervision_amount;
    $expenseExchange->finalsupervision = $finalsupervision;

    if (empty($id)) {
        $id = $expenseExchangeDAO->insert($expenseExchange);
    } else {

        $expenseExchange->id = $id;
        $id = $expenseExchangeEX->insertWithID($expenseExchange);
    }


    if (isset($supplierid) && $supplierid > 1) {
        $supplierdata = $supplierDAO->load($supplierid);
        $last_supplierdebtchangeid = (int) R::getCell('SELECT supplierdebtchangeid FROM supplierdebtchange order by supplierdebtchangeid desc limit 1');
        $data_arr = array(
            'supplierid' => $supplierdata->supplierid,
            'payedDept' => $thevalue,
            'comment' => $supplierdata->suppliername . 'صرف مصروف' . $ET->expensestypename,
            'saveid' => $_SESSION['saveid'],
            'currentDate' => date('Y-m-d H:i:s'),
            'clientorsupplier' => 1,
            'debtBefore' => $supplierdata->suppliercurrentDebt,
            'payedDeptCurr' => $thevalue,
            'debtAfter' => ($supplierdata->suppliercurrentDebt - $thevalue),
            'voucher' => $last_supplierdebtchangeid + 1,
            );

           CURL_Request($data_arr, 'supplierPayedDeptController.php?do=add',  0,  1, '', 'POST') ;
               
        

    }

    $clientData = $clientDAO->load($projectData->clientid);
    $last_clientdebtchangeid = (int) R::getCell('SELECT clientdebtchangeid FROM clientdebtchange order by clientdebtchangeid desc limit 1');
    

         $data_arr = array(
            'paymethod'=>0,
            'bankid'=>-1,
            'checkNo'=>'',
            'productid'=>'',
            'searchvalue'=> 2,
            'curlpost'=>1,
            'saveid' => $_SESSION['saveid'],
            'expensetype'=> $expensetype,
            'Costcenterid' => $costcenterid,
            'expensesname' => $clientData->clientname   . ' صرف مصروف '  .  $ET->expensestypename,
            'expensevalue' => $thevalue + $finalsupervision,
            'tax'=>'',
            'expensevalueAfterTax'=>'',
            'expensecomment'=>$expenseexcomment
            );
 
            //  $data_arr = array(
            // 'clientid' => $clientData->clientid,
            // 'payedDept' => ($thevalue + $finalsupervision),
            // 'comment' => $clientData->clientname   . ' صرف مصروف',
            // 'saveid' => $_SESSION['saveid'],
            // 'currentDate' => date('Y-m-d H:i:s'),
            // 'clientorsupplier' => 2,
            // 'debtBefore' => $clientData->clientdebt,
            // 'payedDeptCurr' => ($thevalue + $finalsupervision),
            // 'debtAfter' => ($clientData->clientdebt + ($thevalue + $finalsupervision)),
            // 'voucher' => $last_clientdebtchangeid + 1,
            // 'oldvoucher' => $last_clientdebtchangeid + 1,
            // 'notPremium' => 'notPremium',
            // 'saveorbankPremium' =>  1,

            CURL_Request($data_arr, 'expensesController.php?do=add',  0,  1, '', 'POST') ;
            $debtAfter = $clientData->clientdebt + ($thevalue + $finalsupervision);
            R::exec("UPDATE `client` SET `clientdebt`= $debtAfter where clientid =  ? ",[$projectData->clientid]);
                $clientDeptChange->comment = $expenseexcomment;
                $clientDeptChange->processname =  $clientData->clientname . ' صرف مصروف ' . $ET->expensestypename;
                $clientDeptChange->clientdebtchangeafter = $debtAfter;
                $clientDeptChange->clientdebtchangeamount = $thevalue + $finalsupervision;
                $clientDeptChange->totalOperationCost = $thevalue + $finalsupervision;
                $clientDeptChange->clientdebtchangebefore = $clientData->clientdebt;
                $clientDeptChange->clientdebtchangedate = date("Y-m-d H:i:s"); //$today;
                $clientDeptChange->clientdebtchangemodelid = $id;
                $clientDeptChange->paySerialNo = $paySerialNo;
                $clientDeptChange->clientdebtchangetype = 1;
                $clientDeptChange->tablename = "clientPayedDeptController.php";
                $clientDeptChange->userid = $_SESSION['userid'];
                $clientDeptChange->clientid = $clientData->clientid;
                $clientDeptChange->seller = 0;
                $clientDeptChange->dailyentryid = 0;
                $clientDeptChange->discountearlyRepayment = NULL;
                $clientDeptChange->costcenterid = $costcenterid;
                $clientDeptChange->currencyId = 1;
                $clientDeptChange->conversionFactor = 1;
                $clientDeptChange->payedInCurrency = $thevalue + $finalsupervision;
                $clientDeptChange->totalpayments = NULL;
                 $clientDeptChangeDAO->insert($clientDeptChange);

         

}

function update() {
    $editid = filter_input(INPUT_POST, 'editid', FILTER_DEFAULT);
    delete($editid);
    add($editid);
}

function delete($id) {
    global $expenseExchangeDAO;
    global $accountsTreeDAO;
    global $ProjectDAO;
    global $expensesTypeDAO;
    global $bankDAO;
    global $bankAccountDAO;
    global $saveDAO;

    $ETFromTreeID;

    $expenseExchange = $expenseExchangeDAO->load($id);
    $expensefrom = $expenseExchange->expensefrom;
    $expenseid = $expenseExchange->expenseid;
    $expenseid2 = $expenseExchange->expenseid2;
    $expensetype = $expenseExchange->expensetype;
    $thevalue = $expenseExchange->thevalue;
    $oldEntryID = $expenseExchange->entryid;
    if ($expensefrom == 0) {
        $EFrom = $saveDAO->load($expenseid);
        $ETFromTreeID = $EFrom->treeId;
        if (count($ETTreeData) == 0) {
            $ETFromTreeID = addTreeElement($EFrom->savename, 20, 3, 0, 1, '', 0, 0);
        }
    } elseif ($expensefrom == 1) {

        $EFrom = $bankAccountDAO->load($expenseid2);
        $ETFromTreeID = $EFrom->treeId;
        if (count($ETTreeData) == 0) {
            //we dont add banks to tree now
            $bankData = $bankDAO->load($expenseid);
//            $bankTreeData = $accountsTreeDAO->queryByName($bankData->bankname);
//            if (count($bankTreeData) == 0) {
//                $bankTreeId = addTreeElement($bankData->bankname, 21, 3, 0, 0, '', 0, 0);
//            } else {
//                $bankTreeId = $bankTreeData[0]->id;
//            }
//            $ETFromTreeID = addTreeElement($EFrom->accountname, $bankTreeId, 3, 0, 1, '', 0, 0);
            $ETFromTreeID = addTreeElement("$EFrom->accountname / $bankData->bankname", 38, 3, 0, 1, '', 0, 0);
        }
    } elseif ($expensefrom == 2) {

    }
    #######get project name
    $projectData = $ProjectDAO->load($expenseExchange->projectid);
    $projectName = $projectData->name;

    ##make daily entry
    $ET = $expensesTypeDAO->load($expensetype);
    $ETTreeID = $ET->treeId;
    if (count($ETTreeData) == 0) {
        $ETTreeID = addTreeElement($ET->expensestypename, 14, 3, 0, 0, '', 0, 0);
    }


    #####insert in dataentry
    //$entryid = entryinsert_data_reverse($thevalue, $ETTreeID, $ETFromTreeID, $expenseExchange->costcenterid, 12);
    $entryid = entryinsert_data_reverse($oldEntryID, 12);


    $expenseExchangeDAO->delete($id);
}

function getserails() {
    global $expenseExchangeEX;

    function generateRandomString($length = 4) {
        $newnum = substr(str_shuffle("0123456789"), 0, $length);
        return date("Y") . '' . $newnum;
    }

    $number = generateRandomString();

    //to make sure there are no duplicate serails

    $checkifthere = $expenseExchangeEX->queryAllbyserialno($number);
    if (count($checkifthere) > 0) {
        $number = generateRandomString();
    }

    return $number;
}

function entryinsert_data($value, $ETTreeID, $ETFromTreeID, $costcenterId, $costcenterType) {

    global $dailyEntry;
    global $dailyEntryCreditor;
    global $dailyEntryDebtor;



    ########## nsert into entry
    $dailyEntry->entryComment = 'صرف مصروف';
    $dailyEntry->fromFlag = 2;
    $dailyEntry->reverseofid = 0;

    $dailyEntryDebtorArray = array();
    $dailyEntryDebtor->value = $value;
    $dailyEntryDebtor->accountstreeid = $ETTreeID;
    $dailyEntryDebtor->pluginComment = "صرف مصروف";
    $dailyEntryDebtor->pluginControllerName = "expenseexchange.php";
    $dailyEntryDebtor->costcenterid = $costcenterId;
    $dailyEntryDebtor->costcenterType = $costcenterType;

    array_push($dailyEntryDebtorArray, $dailyEntryDebtor);

    $dailyEntryCreditorArray = array();
    $dailyEntryCreditor->value = $value;
    $dailyEntryCreditor->accountstreeid = $ETFromTreeID;
    $dailyEntryCreditor->pluginComment = "صرف مصروف";
    $dailyEntryCreditor->pluginControllerName = "expenseexchange.php";
    array_push($dailyEntryCreditorArray, $dailyEntryCreditor);



    $entryData = insertEntery($dailyEntry, $dailyEntryDebtorArray, $dailyEntryCreditorArray);
    return $entryData[1];
}

function entryinsert_data_reverse($oldEntryID) {

    global $dailyEntry;
    global $dailyEntryCreditor;
    global $dailyEntryDebtor;

    $entryData = reverseEntryWithItsID($oldEntryID);

    /* ########## nsert into entry
      $dailyEntry->entryComment = 'حذف صرف مصروف';
      $dailyEntry->fromFlag = 2;

      $dailyEntryCreditorArray = array();
      $dailyEntryCreditor->value = $value;
      $dailyEntryCreditor->accountstreeid = $ETTreeID;
      array_push($dailyEntryCreditorArray, $dailyEntryCreditor);

      $dailyEntryDebtorArray = array();
      $dailyEntryDebtor->value = $value;
      $dailyEntryDebtor->accountstreeid = $ETFromTreeID;
      $dailyEntryDebtor->costcenterid = $costcenterId;
      $dailyEntryDebtor->costcenterType = $costcenterType;
      $dailyEntryDebtor->pluginComment = 'حذف صرف مصروف';
      $dailyEntryDebtor->pluginControllerName = "expenseexchange.php";
      array_push($dailyEntryDebtorArray, $dailyEntryDebtor);

      $entryData = insertEntery($dailyEntry, $dailyEntryDebtorArray, $dailyEntryCreditorArray); */
    return $entryData[1];
}
 
/* --------------- affect plugins --------------------------------------------- */
?>