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/transferclientccountsController.php
<?php

include("../public/impOpreation.php");
include("../library/uploadImages.php");

include_once('dailyentryfun.php');

require_once('../models/dao/YoutubeLinkDAO.class.php');
require_once('../models/dto/YoutubeLink.class.php');
require_once('../models/mysql/YoutubeLinkMySqlDAO.class.php');
require_once('../models/mysql/ext/YoutubeLinkMySqlExtDAO.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');

//transferclientaccounts
require_once('../models/dao/TransferclientaccountsDAO.class.php');
require_once('../models/dto/Transferclientaccount.class.php');
require_once('../models/mysql/TransferclientaccountsMySqlDAO.class.php');
require_once('../models/mysql/ext/TransferclientaccountsMySqlExtDAO.class.php');

//Breadcrumb
require_once("../library/breadcrumb.php");

$youtubeLink = new YoutubeLink();
$youtubeLinkDAO = new YoutubeLinkMySqlDAO();
$youtubeLinkEX = new YoutubeLinkMySqlExtDAO();

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

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

//transferClientAccount
$transfer = new Transferclientaccount();
$transferDAO = new TransferclientaccountsMySqlDAO();
$transferExt = new TransferclientaccountsMySqlExtDAO();

//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();

//Breadcrumb
$breadcrumbObject = new Breadcrumb();

$do = $_GET['do'];
$today = date("Y-m-d H:i:s");
$date = date("Y-m-d");

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

if (empty($do)) {
    include_once("../public/authentication.php");

    $clientsData = getClients(); //undeleted clients
    $smarty->assign("clientsData", $clientsData);

    $smarty->display("header.html");
    $smarty->display("transferclientaccountsview/add.html");
    $smarty->assign("transferaccountclients", 1);
    $smarty->display("footer.html");
} elseif ($do == "add") {
    //here the permssion check
    // include_once("../public/authentication.php");
    try {
        add();
        header("location:?do=sucess");
    } catch (Exception $e) {
        //echo $e;
        header("location:?do=error");
    }
} elseif ($do == "show") {
    //here the permssion check
    include_once("../public/authentication.php");

    $startDate = $_REQUEST['from'];
    $endDate = $_REQUEST['to'];
    $id = (int) $_REQUEST['id'];


    if ($id > 0) {
        $message = " عرض تحويل :" . "رقم:" . $id;
        $smarty->assign('message', $message);
        showById($id);
    } elseif (isset($startDate) && $startDate != "" && isset($endDate) && $endDate != "") {
        $message = " عرض تحويلات من تاريخ:" . $startDate . "الى تاريخ:" . $endDate;
        $smarty->assign('message', $message);
        showByDate($startDate, $endDate);
    } elseif (isset($startDate) && $startDate != "") {
        $condition = '>=';
        $message = " عرض تحويلات من تاريخ:" . $startDate . '';
        $smarty->assign('message', $message);
        showByOneDate($condition, $startDate);
    } elseif (isset($endDate) && $endDate != "") {
        $condition = '<=';
        $message = " عرض تحويلات الخزن الى تاريخ:" . $endDate . '';
        $smarty->assign('message', $message);
        showByOneDate($condition, $endDate);
    } else {
        // showAll();
        $today = date("Y-m-d");
        showByDate($today, $today);
    }


    //breadcrumb
    $breadcrumbObject->add('الحسابات><a href="transferclientccountsController.php?do=show">التحويل بين الخزن</a> > عرض التحويلات', 'transferclientccountsController.php', 0);
    //Now output the navigation.
    $breadCrumb = $breadcrumbObject->output();
    $smarty->assign("breadCrumb", $breadCrumb);

    $youtubes = $youtubeLinkDAO->queryAll();
    $smarty->assign("youtubes", $youtubes);

    $smarty->display("header.html");
    $smarty->display("transferclientaccountsview/show.html");
    ;
    $smarty->assign("customCheck", 1);
    $smarty->display("footer.html");
} elseif ($do == "edit") {
    include_once("../public/authentication.php");

    $loadData = edit();
    $smarty->assign("loadData", $loadData);

    $clientidfromval = $clientDAO->load($loadData->clientidfrom);
    $smarty->assign("clientidfromval", $clientidfromval);

    $clientData = getClients();
    $smarty->assign("clientsData", $clientData);

    // //breadcrumb
    // $breadcrumbObject->add('الحسابات><a href="transferclientccountsController.php?do=show">التحويل بين الخزن</a> > تعديل تحويل لخزنة', 'transferclientccountsController.php', 0);
    // //Now output the navigation.
    // $breadCrumb = $breadcrumbObject->output();
    // $smarty->assign("breadCrumb", $breadCrumb);

    $smarty->display("header.html");
    $smarty->display("transferclientaccountsview/edit.html");
    $smarty->assign("transferaccountclients", 1);
    $smarty->display("footer.html");
} elseif ($do == "update") {

    include_once("../public/authentication.php");
    try {
        $transferidold = $_POST['transferidold'];
        delete($transferidold);
        add();
        header("location:?do=sucess");
    } catch (Exception $e) {
        header("location:?do=error");
    }
} elseif ($do == "tempdelete") {
    include_once("../public/authentication.php");
    $transferid = $_GET['transferid'];
    // here the function that do the action
    $saveValuebeforeValid = tempdelete($transferid);
    if ($saveValuebeforeValid[1] == 1) {
        header("location:?do=sucess");
    } else {
        $url = "transferclientccountsController.php?do=show";
        $smarty->assign('urldirect', $url);
        $note = "لقد حدث خطأ اثناء اجراء العملية";

        $smarty->assign('msgnote', $note);
        $smarty->display("notes.html");
    }
} elseif ($do == "returndelete") {
    include_once("../public/authentication.php");
    $transferid = $_GET['transferid'];
    // here the function that do the action
    $saveValuebeforeValid = returndelete($transferid);
    if ($saveValuebeforeValid[1] == 1) {
        header("location:?do=sucess");
    } else {
        $url = "transferclientccountsController.php?do=show";
        $smarty->assign('urldirect', $url);
        $note = "لقد حدث خطأ اثناء اجراء العملية";

        $smarty->assign('msgnote', $note);
        $smarty->display("notes.html");
    }
} elseif ($do == "delete") {
    include_once("../public/authentication.php");
    try {
        $transferid = $_GET['transferid'];
        delete($transferid);
        header("location:?do=sucess");
    } catch (Exception $e) {
        header("location:?do=error");
    }
} elseif ($do == "executeOperation") {

    //here the permssion check
    include_once("../public/authentication.php");
    // here the function that do the action
    executeOperation();
    header("location:?do=show");
} elseif ($do == "sucess") {
    $smarty->display("header.html");
    //here the smarty templates
    $smarty->display("succes.html");
    $smarty->display("footer.html");
} elseif ($do == "error") {
    $smarty->display("header.html");
    //here the smarty templates
    $smarty->display("error.html");
    $smarty->display("footer.html");
} elseif ($do == "loadClientExceptId") {
    $clientIdFrom = $_GET['clientidfrom'];

    // here the function that do the action
    $clientToData = loadClientExceptId($clientIdFrom);
    $smarty->assign("clientToData", $clientToData);


    //here the smarty templates
    $smarty->display("transferclientaccountsview/clientto.html");
} elseif ($do == "getclientValue") {
    $clientIdFrom = $_GET['clientidfrom'];

    // here the function that do the action
    $clientcurrentValue = getclientValue($clientIdFrom);

    echo $clientcurrentValue;
}

function getClients() {
    global $clientDAO;
    $clientsData = $clientDAO->queryByCondition(0);
    return $clientsData;
}

function loadClientExceptId($clientIdFrom) {

    //to use the variable out side the funcion
    global $clientExt;
    //load all client data
    $clientData = $clientExt->getAllClientsExceptId($clientIdFrom);
    return $clientData;
}

function getclientValue($clientId) {

    //to use the variable out side the funcion
    global $clientDAO;

    $clientData = $clientDAO->load($clientId);
    $clientcurrentvalue = $clientData->clientdebt;

    return $clientcurrentvalue;
}

function add() {
    global $transfer;
    global $transferDAO;

    global $client;
    global $clientDAO;
    global $clientExt;

    global $clientDeptChange;
    global $clientDeptChangeDAO;

    //Dailyentry
    global $dailyEntry;

    //Dailyentrycreditor دائن
    global $dailyEntryCreditor;

    //Dailyentrydebtor مدين
    global $dailyEntryDebtor;

    $transactions = new Transaction();

    $clientidFrom = $_POST['clientidfrom'];
    $clientidTo = $_POST['clientidto'];
    $transfermoneyValue = $_POST['transfermoneyvalue'];
    $comment = $_POST['comment'];

    $clientDataFrom = $clientDAO->load($clientidFrom);
    $clientDataTo = $clientDAO->load($clientidTo);

    if ($clientDataTo->clientdebt + $transfermoneyValue > $clientDataTo->debtLimit) {
        header("location:?do=error");
    }
    //add in Transferclientsaccounts tbl
    $transfer->conditions = 0;
    $transfer->clientidfrom = $clientidFrom;
    $transfer->clientidto = $clientidTo;
    $transfer->transferdate = date("Y-m-d");
    $transfer->transfervalue = $transfermoneyValue;
    $transfer->userid = $_SESSION["userid"];
    $transfer->dailyentryid = 0;
    $transfer->comment = $comment;

    $transferId = $transferDAO->insert($transfer);

    if ($transfermoneyValue > 0) {
        $clientfromData = getClientDataFromClientInUseSP($clientidFrom);
        //update client from debt
        $client->clientdebt = $clientDataFrom->clientdebt - $transfermoneyValue;
        $client->userid = $_SESSION['userid'];
        $client->clientid = $clientidFrom;
        $clientExt->updateClientdebt($client);
        markClientAsNOTInUse($clientidFrom);

        //insert into clientfromdebtchange tbl
        $clientDeptChange->comment = $comment;
        $clientDeptChange->processname = "التحويل من حساب عميل إلى عميل آخر";
        $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
        $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
        $clientDeptChange->totalOperationCost = $transfermoneyValue;
        $clientDeptChange->clientdebtchangebefore = $clientDataFrom->clientdebt;
        $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
        $clientDeptChange->clientdebtchangemodelid = $transferId;
        $clientDeptChange->clientdebtchangetype = 1;
        $clientDeptChange->tablename = "transferclientccountsController.php";
        $clientDeptChange->userid = $_SESSION['userid'];
        $clientDeptChange->clientid = $clientidFrom;
        $clientDeptChange->seller = 0;
        $clientDeptChange->dailyentryid = 0;
        $clientDeptChange->currencyId = 1;
        $clientDeptChange->conversionFactor = 1;
        $clientDeptChange->payedInCurrency = 0;

        //Insert
        $clientdebtchangeFromId = $clientDeptChangeDAO->insert($clientDeptChange);


        $clienttoData = getClientDataFromClientInUseSP($clientidTo);
        //update client to debt
        $client->clientdebt = $clientDataTo->clientdebt + $transfermoneyValue;
        $client->userid = $_SESSION['userid'];
        $client->clientid = $clientidTo;
        $clientExt->updateClientdebt($client);
        markClientAsNOTInUse($clientidTo);

        //insert into clienttodebtchange tbl
        $clientDeptChange->comment = $comment;
        $clientDeptChange->processname = "التحويل من حساب عميل إلى عميل آخر";
        $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
        $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
        $clientDeptChange->totalOperationCost = $transfermoneyValue;
        $clientDeptChange->clientdebtchangebefore = $clientDataTo->clientdebt;
        $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
        $clientDeptChange->clientdebtchangemodelid = $transferId;
        $clientDeptChange->clientdebtchangetype = 0;
        $clientDeptChange->tablename = "transferclientccountsController.php";
        $clientDeptChange->userid = $_SESSION['userid'];
        $clientDeptChange->clientid = $clientidTo;
        $clientDeptChange->seller = 0;
        $clientDeptChange->dailyentryid = 0;
        $clientDeptChange->currencyId = 1;
        $clientDeptChange->conversionFactor = 1;
        $clientDeptChange->payedInCurrency = 0;

        //Insert
        $clientdebtchangeToId = $clientDeptChangeDAO->insert($clientDeptChange);

        ///////////////////////////// daily entry
        // start creditor
        $fromTreeId = $clientDataFrom->treeId;
        $dailyEntryCreditorArray = array();

        $dailyEntryCreditor->accountstreeid = $fromTreeId;
        $dailyEntryCreditor->value = $transfermoneyValue;

        array_push($dailyEntryCreditorArray, $dailyEntryCreditor);
        // end creditor
        // start debtor
        $dailyEntry->entryComment = ' اضافة تحويل من ' . $clientDataFrom->clientname . ' الى ' . $clientDataTo->clientname;
        $dailyEntry->reverseofid = 0;
        $toTreeId = $clientDataTo->treeId;

        $dailyEntryDebtor->accountstreeid = $toTreeId;
        $dailyEntryDebtor->value = $transfermoneyValue;
        $dailyEntryDebtorArray = array();

        array_push($dailyEntryDebtorArray, $dailyEntryDebtor);
        try {
            $returnedData = insertEntery($dailyEntry, $dailyEntryDebtorArray, $dailyEntryCreditorArray, 1, $transferId, "transferclientccountsController.php?do=show&id=$transferId");

            $did = $returnedData[1];

            $rowData = $transferDAO->load($transferId);
            $transfer->conditions = $rowData->conditions;
            $transfer->clientidfrom = $rowData->clientidfrom;
            $transfer->clientidto = $rowData->clientidto;
            $transfer->transferdate = date("Y-m-d");
            $transfer->transfervalue = $rowData->transfervalue;
            $transfer->userid = $_SESSION["userid"];
            $transfer->dailyentryid = $did;
            $transfer->comment = $rowData->comment;
            $transferDAO->update($transfer);

            $transactions->commit();
        } catch (Exception $ex) {
            $transactions->rollback();
        }
    }
}

function getClientDataFromClientInUseSP($clientid) {
    global $clientExt;
    global $clientDAO;
    if ($clientid == 1) {
        $client_data = $clientDAO->load($clientid);
    } elseif ($clientid > 1) {
        $noOfTries = 0;
        $client_data = $clientExt->callClientInUseSP($clientid);
        while ($client_data->clientdebt == 'in_use') {
            sleep(1);
            $noOfTries++;
            if ($noOfTries > 15) { // mean 15 sec as sleep is 1 sec her
                //markClientAsNOTInUse -- using redbeans to instantly execute in database as we are in transaction now "means affecting row is done @end of execution or comit"
                liveBackupComment("-- force free client=$clientid with redbean");
                R::exec('UPDATE client SET  inUse = 0 where clientid = ' . $clientid);
            }
            $client_data = $clientExt->callClientInUseSP($clientid);
        }
    }
    return $client_data;
}

function markClientAsNOTInUse($clientid) { //mark as not in use "free him to be able to change debt again"
    global $clientExt;
    if ($clientid == 1) {
        //do no thing. we didnot mark it as in use at begining
    } else {
        $clientExt->markClientAsNOTInUse($clientid);
    }
}

//show
function showById($id) {
    global $transferExt;
    global $smarty;


    $transferData = $transferExt->queryWithQueryString(" and  transferclientaccounts.transferid=$id ");
    // assign your db results to the template
    $smarty->assign('transferData', $transferData);
}

function showByDate($startDate, $endDate) {
    global $transferExt;
    global $smarty;


    $transferData = $transferExt->queryWithDate($startDate, $endDate);
    // assign your db results to the template
    $smarty->assign('transferData', $transferData);
}

//show By one Date
function showByOneDate($condition, $date) {
    global $transferExt;
    global $smarty;

    $transferData = $transferExt->queryWithOneDate($condition, $date);
    // assign your db results to the template
    $smarty->assign('transferData', $transferData);
}

function tempdelete($transferid) {
    //to use the variable out side the funcion
    global $transfer;
    global $transferDAO;
    global $transferExt;

    global $client;
    global $clientDAO;
    global $clientExt;

    global $clientDeptChange;
    global $clientDeptChangeDAO;

    $dailyentryid = $_GET['action'];
    $singleTransfermoney = $transferDAO->load($transferid);
    $saveValuebeforeValid = 1;
    try {
        if ($singleTransfermoney->conditions == 0) {

            //get transfermoneyvalue by transferid
            $transferData = $transferDAO->load($transferid);
            $transfermoneyValue = $transferData->transfervalue;
            $clientidFrom = $transferData->clientidfrom;
            $clientidTo = $transferData->clientidto;

            //
            $clientDataFrom = $clientDAO->load($clientidFrom);
            $clientDataTo = $clientDAO->load($clientidTo);

            $transfer->conditions = 1;
            $transfer->transferdate = date("Y-m-d");
            $transfer->userid = $_SESSION['userid'];
            $transfer->transferid = $transferid;

            $transferExt->updateCondition($transfer);


            if ($transfermoneyValue > 0) {
                $clientfromData = getClientDataFromClientInUseSP($clientidFrom);
                //update client from debt
                $client->clientdebt = $clientDataFrom->clientdebt + $transfermoneyValue;
                $client->userid = $_SESSION['userid'];
                $client->clientid = $clientidFrom;
                $clientExt->updateClientdebt($client);
                markClientAsNOTInUse($clientidFrom);

                //insert into clientfromdebtchange tbl
                $clientDeptChange->comment = $transferData->comment;
                $clientDeptChange->processname = "حذف التحويل من حساب عميل إلى عميل آخر";
                $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
                $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
                $clientDeptChange->totalOperationCost = $transfermoneyValue;
                $clientDeptChange->clientdebtchangebefore = $clientDataFrom->clientdebt;
                $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
                $clientDeptChange->clientdebtchangemodelid = $transferData->transferid;
                $clientDeptChange->clientdebtchangetype = 1;
                $clientDeptChange->tablename = "transferclientccountsController.php";
                $clientDeptChange->userid = $_SESSION['userid'];
                $clientDeptChange->clientid = $clientidFrom;
                $clientDeptChange->seller = 0;
                $clientDeptChange->dailyentryid = 0;
                $clientDeptChange->currencyId = 1;
                $clientDeptChange->conversionFactor = 1;
                $clientDeptChange->payedInCurrency = 0;

                //Insert
                $clientdebtchangeFromId = $clientDeptChangeDAO->insert($clientDeptChange);


                $clienttoData = getClientDataFromClientInUseSP($clientidTo);
                //update client to debt
                $client->clientdebt = $clientDataTo->clientdebt - $transfermoneyValue;
                $client->userid = $_SESSION['userid'];
                $client->clientid = $clientidTo;
                $clientExt->updateClientdebt($client);
                markClientAsNOTInUse($clientidTo);

                //insert into clienttodebtchange tbl
                $clientDeptChange->comment = $transferData->comment;
                $clientDeptChange->processname = "حذف التحويل من حساب عميل إلى عميل آخر";
                $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
                $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
                $clientDeptChange->totalOperationCost = $transfermoneyValue;
                $clientDeptChange->clientdebtchangebefore = $clientDataTo->clientdebt;
                $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
                $clientDeptChange->clientdebtchangemodelid = $transferData->transferid;
                $clientDeptChange->clientdebtchangetype = 0;
                $clientDeptChange->tablename = "transferclientccountsController.php";
                $clientDeptChange->userid = $_SESSION['userid'];
                $clientDeptChange->clientid = $clientidTo;
                $clientDeptChange->seller = 0;
                $clientDeptChange->dailyentryid = 0;
                $clientDeptChange->currencyId = 1;
                $clientDeptChange->conversionFactor = 1;
                $clientDeptChange->payedInCurrency = 0;

                //Insert
                $clientdebtchangeToId = $clientDeptChangeDAO->insert($clientDeptChange);
            }
        }

        $note = "success";
    } catch (Exception $e) {
        $note = "حدث خطأ أثناء حذف التحويل";
        $saveValuebeforeValid = 2;
    }

    reverseEntryWithItsID($dailyentryid);
    return array($note, $saveValuebeforeValid);
}

function returndelete($transferid) {

    global $transfer;
    global $transferDAO;
    global $transferExt;

    global $client;
    global $clientDAO;
    global $clientExt;

    global $clientDeptChange;
    global $clientDeptChangeDAO;

    //Dailyentry
    global $dailyEntry;

    //Dailyentrycreditor دائن
    global $dailyEntryCreditor;

    //Dailyentrydebtor مدين
    global $dailyEntryDebtor;

    $singleTransfermoney = $transferDAO->load($transferid);

    try {
        if ($singleTransfermoney->conditions == 1) {
            //get transfermoneyvalue by transferid
            $transferData = $transferDAO->load($transferid);
            $transfermoneyValue = $transferData->transfervalue;
            $clientidFrom = $transferData->clientidfrom;
            $clientidTo = $transferData->clientidto;
            //
            $clientDataFrom = $clientDAO->load($clientidFrom);
            $clientDataTo = $clientDAO->load($clientidTo);

            $saveValuebeforeValid = 1;

            $transfer->conditions = 0;
            $transfer->transferdate = date("Y-m-d");
            $transfer->userid = $_SESSION['userid'];
            $transfer->transferid = $transferid;

            $transferExt->updateCondition($transfer);

            if ($transfermoneyValue > 0) {
                $clientfromData = getClientDataFromClientInUseSP($clientidFrom);
                //update client from debt
                $client->clientdebt = $clientDataFrom->clientdebt - $transfermoneyValue;
                $client->userid = $_SESSION['userid'];
                $client->clientid = $clientidFrom;
                $clientExt->updateClientdebt($client);
                markClientAsNOTInUse($clientidFrom);

                //insert into clientfromdebtchange tbl
                $clientDeptChange->comment = $transferData->comment;
                $clientDeptChange->processname = "التحويل من حساب عميل إلى عميل آخر";
                $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
                $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
                $clientDeptChange->totalOperationCost = $transfermoneyValue;
                $clientDeptChange->clientdebtchangebefore = $clientDataFrom->clientdebt;
                $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
                $clientDeptChange->clientdebtchangemodelid = $transferData->transferid;
                $clientDeptChange->clientdebtchangetype = 1;
                $clientDeptChange->tablename = "transferclientccountsController.php";
                $clientDeptChange->userid = $_SESSION['userid'];
                $clientDeptChange->clientid = $clientidFrom;
                $clientDeptChange->seller = 0;
                $clientDeptChange->dailyentryid = 0;
                $clientDeptChange->currencyId = 1;
                $clientDeptChange->conversionFactor = 1;
                $clientDeptChange->payedInCurrency = 0;

                //Insert
                $clientdebtchangeFromId = $clientDeptChangeDAO->insert($clientDeptChange);


                $clienttoData = getClientDataFromClientInUseSP($clientidTo);
                //update client to debt
                $client->clientdebt = $clientDataTo->clientdebt + $transfermoneyValue;
                $client->userid = $_SESSION['userid'];
                $client->clientid = $clientidTo;
                $clientExt->updateClientdebt($client);
                markClientAsNOTInUse($clientidTo);

                //insert into clienttodebtchange tbl
                $clientDeptChange->comment = $transferData->comment;
                $clientDeptChange->processname = "التحويل من حساب عميل إلى عميل آخر";
                $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
                $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
                $clientDeptChange->totalOperationCost = $transfermoneyValue;
                $clientDeptChange->clientdebtchangebefore = $clientDataTo->clientdebt;
                $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
                $clientDeptChange->clientdebtchangemodelid = $transferData->transferid;
                $clientDeptChange->clientdebtchangetype = 0;
                $clientDeptChange->tablename = "transferclientccountsController.php";
                $clientDeptChange->userid = $_SESSION['userid'];
                $clientDeptChange->clientid = $clientidTo;
                $clientDeptChange->seller = 0;
                $clientDeptChange->dailyentryid = 0;
                $clientDeptChange->currencyId = 1;
                $clientDeptChange->conversionFactor = 1;
                $clientDeptChange->payedInCurrency = 0;

                //Insert
                $clientdebtchangeToId = $clientDeptChangeDAO->insert($clientDeptChange);
                ///////////////////////////// daily entry
                // start creditor
                $fromTreeId = $clientDataFrom->treeId;
                $dailyEntryCreditorArray = array();

                $dailyEntryCreditor->accountstreeid = $fromTreeId;
                $dailyEntryCreditor->value = $transfermoneyValue;

                array_push($dailyEntryCreditorArray, $dailyEntryCreditor);
                // end creditor
                // start debtor
                $dailyEntry->entryComment = ' اضافة تحويل من ' . $clientDataFrom->clientname . ' الى ' . $clientDataTo->clientname;
                $toTreeId = $clientDataTo->treeId;

                $dailyEntryDebtor->accountstreeid = $toTreeId;
                $dailyEntryDebtor->value = $transfermoneyValue;
                $dailyEntryDebtorArray = array();

                array_push($dailyEntryDebtorArray, $dailyEntryDebtor);
                $returnedData = insertEntery($dailyEntry, $dailyEntryDebtorArray, $dailyEntryCreditorArray, 1, $transferid, "transferclientccountsController.php?do=show&id=$transferid");

                $did = $returnedData[1];

                $rowData = $transferDAO->load($transferData->transferid);
                $transfer->conditions = $rowData->conditions;
                $transfer->clientidfrom = $rowData->clientidfrom;
                $transfer->clientidto = $rowData->clientidto;
                $transfer->transferdate = date("Y-m-d");
                $transfer->transfervalue = $rowData->transfervalue;
                $transfer->userid = $_SESSION["userid"];
                $transfer->dailyentryid = $did;
                $transfer->comment = $rowData->comment;
                $transferDAO->update($transfer);
            }
        }
        $note = "success";
    } catch (Exception $e) {
        $note = "حدث خطأ أثناء اعادة حذف التحويل";
        $saveValuebeforeValid = 2;
    }


    return array($note, $saveValuebeforeValid);
}

//edit from transfer tbl
function edit() {
    //to use the variable out side the funcion
    global $transferExt;

    $transferId = $_GET['transferid'];
    $loadData = $transferExt->loadTransferById($transferId);
    return $loadData;
}

function executeOperation() {
    //to use the variable out side the funcion
    global $myStoremovementEx;
    global $smarty;

    $outputString = "";

    $operationType = $_POST['operation'];
    $smarty->assign("operationType", $operationType);

    $choosedItemArr = $_POST['choosedItem'];

    if (count($choosedItemArr) > 0) {
        foreach ($choosedItemArr as $transferid) {

            if ($operationType == '1') {
                //tempdelete
                $note = tempdelete($transferid);
                if ($note[0] != "success") {
                    $outputString .= $note[0] . "<br/>";
                } else {
                    $outputString .= "تمت العملية بنجاح <br/>";
                }
            } elseif ($operationType == "2") {
                //returndelete
                $note = returndelete($transferid);
                if ($note[0] != "success") {
                    $outputString .= $note[0] . "<br/>";
                } else {
                    $outputString .= "تمت العملية بنجاح <br/>";
                }
            }
        }

        $smarty->assign("outputString", $outputString);
    }
}

function delete($transferIdold) {

    global $transfer;
    global $transferDAO;

    global $client;
    global $clientDAO;
    global $clientExt;

    global $clientDeptChange;
    global $clientDeptChangeDAO;

    //Dailyentry
    global $dailyEntry;

    //Dailyentrycreditor دائن
    global $dailyEntryCreditor;

    //Dailyentrydebtor مدين
    global $dailyEntryDebtor;

    $transactions = new Transaction();

    $rowDataold = $transferDAO->load($transferIdold);

    $clientidFrom = $rowDataold->clientidfrom;
    $clientidTo = $rowDataold->clientidto;
    $transfermoneyValue = $rowDataold->transfervalue;
    $comment = $rowDataold->comment;
    //
    $clientDataFrom = $clientDAO->load($clientidFrom);
    $clientDataTo = $clientDAO->load($clientidTo);

    $transferId = $transferIdold;

    if ($transfermoneyValue > 0) {
        try {
            $rowDataold->conditions = 2;
            $transferDAO->update($rowDataold);

            $clientfromData = getClientDataFromClientInUseSP($clientidFrom);
            //update client from debt
            $client->clientdebt = $clientDataFrom->clientdebt + $transfermoneyValue;
            $client->userid = $_SESSION['userid'];
            $client->clientid = $clientidFrom;
            $clientExt->updateClientdebt($client);
            markClientAsNOTInUse($clientidFrom);

            //insert into clientfromdebtchange tbl
            $clientDeptChange->comment = $comment;
            $clientDeptChange->processname = "حذف التحويل من حساب عميل إلى عميل آخر";
            $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
            $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
            $clientDeptChange->totalOperationCost = $transfermoneyValue;
            $clientDeptChange->clientdebtchangebefore = $clientDataFrom->clientdebt;
            $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
            $clientDeptChange->clientdebtchangemodelid = $transferId;
            $clientDeptChange->clientdebtchangetype = 1;
            $clientDeptChange->tablename = "transferclientccountsController.php";
            $clientDeptChange->userid = $_SESSION['userid'];
            $clientDeptChange->clientid = $clientidFrom;
            $clientDeptChange->seller = 0;
            $clientDeptChange->dailyentryid = 0;
            $clientDeptChange->currencyId = 1;
            $clientDeptChange->conversionFactor = 1;
            $clientDeptChange->payedInCurrency = 0;

            //Insert
            $clientdebtchangeFromId = $clientDeptChangeDAO->insert($clientDeptChange);


            $clienttoData = getClientDataFromClientInUseSP($clientidTo);
            //update client to debt
            $client->clientdebt = $clientDataTo->clientdebt - $transfermoneyValue;
            $client->userid = $_SESSION['userid'];
            $client->clientid = $clientidTo;
            $clientExt->updateClientdebt($client);
            markClientAsNOTInUse($clientidTo);

            //insert into clienttodebtchange tbl
            $clientDeptChange->comment = $comment;
            $clientDeptChange->processname = "حذف التحويل من حساب عميل إلى عميل آخر";
            $clientDeptChange->clientdebtchangeafter = $client->clientdebt;
            $clientDeptChange->clientdebtchangeamount = $transfermoneyValue;
            $clientDeptChange->totalOperationCost = $transfermoneyValue;
            $clientDeptChange->clientdebtchangebefore = $clientDataTo->clientdebt;
            $clientDeptChange->clientdebtchangedate = date('Y-m-d H:i:s'); //$today;
            $clientDeptChange->clientdebtchangemodelid = $transferId;
            $clientDeptChange->clientdebtchangetype = 0;
            $clientDeptChange->tablename = "transferclientccountsController.php";
            $clientDeptChange->userid = $_SESSION['userid'];
            $clientDeptChange->clientid = $clientidTo;
            $clientDeptChange->seller = 0;
            $clientDeptChange->dailyentryid = 0;
            $clientDeptChange->currencyId = 1;
            $clientDeptChange->conversionFactor = 1;
            $clientDeptChange->payedInCurrency = 0;

            //Insert
            $clientdebtchangeToId = $clientDeptChangeDAO->insert($clientDeptChange);

            ///////////////////////////// daily entry

            reverseEntryWithItsID($rowDataold->dailyentryid);
            $transactions->commit();
        } catch (Exception $ex) {
            $transactions->rollback();
            echo $ex;
            die();
        }
    }
    return 1;
}