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

//the global file operation
//global varable
//here the db files that include in the file
include("../public/include_dao.php");
//Sellbill
require_once('../models/dao/SellbillDAO.class.php');
require_once('../models/dto/Sellbill.class.php');
require_once('../models/mysql/SellbillMySqlDAO.class.php');
require_once('../models/mysql/ext/SellbillMySqlExtDAO.class.php');
//Sellbilldetail
require_once('../models/dao/SellbilldetailDAO.class.php');
require_once('../models/dto/Sellbilldetail.class.php');
require_once('../models/mysql/SellbilldetailMySqlDAO.class.php');
require_once('../models/mysql/ext/SellbilldetailMySqlExtDAO.class.php');
//Returnsellbill
require_once('../models/dao/ReturnsellbillDAO.class.php');
require_once('../models/dto/Returnsellbill.class.php');
require_once('../models/mysql/ReturnsellbillMySqlDAO.class.php');
require_once('../models/mysql/ext/ReturnsellbillMySqlExtDAO.class.php');
//Returnsellbilldetail
require_once('../models/dao/ReturnsellbilldetailDAO.class.php');
require_once('../models/dto/Returnsellbilldetail.class.php');
require_once('../models/mysql/ReturnsellbilldetailMySqlDAO.class.php');
require_once('../models/mysql/ext/ReturnsellbilldetailMySqlExtDAO.class.php');
//Sellbillandrutern
require_once('../models/dao/SellbillandruternDAO.class.php');
require_once('../models/dto/Sellbillandrutern.class.php');
require_once('../models/mysql/SellbillandruternMySqlDAO.class.php');
require_once('../models/mysql/ext/SellbillandruternMySqlExtDAO.class.php');
//Sellandruternbilldetail
require_once('../models/dao/SellandruternbilldetailDAO.class.php');
require_once('../models/dto/Sellandruternbilldetail.class.php');
require_once('../models/mysql/SellandruternbilldetailMySqlDAO.class.php');
require_once('../models/mysql/ext/SellandruternbilldetailMySqlExtDAO.class.php');
//Storereport
require_once('../models/dao/StorereportDAO.class.php');
require_once('../models/dto/Storereport.class.php');
require_once('../models/mysql/StorereportMySqlDAO.class.php');
require_once('../models/mysql/ext/StorereportMySqlExtDAO.class.php');
//Storedetail
require_once('../models/dao/StoredetailDAO.class.php');
require_once('../models/dto/Storedetail.class.php');
require_once('../models/mysql/StoredetailMySqlDAO.class.php');
require_once('../models/mysql/ext/StoredetailMySqlExtDAO.class.php');
//Store
require_once('../models/dao/StoreDAO.class.php');
require_once('../models/dto/Store.class.php');
require_once('../models/mysql/StoreMySqlDAO.class.php');
require_once('../models/mysql/ext/StoreMySqlExtDAO.class.php');
//Product
require_once('../models/dao/ProductDAO.class.php');
require_once('../models/dto/Product.class.php');
require_once('../models/mysql/ProductMySqlDAO.class.php');
require_once('../models/mysql/ext/ProductMySqlExtDAO.class.php');
//Save
require_once('../models/dao/SaveDAO.class.php');
require_once('../models/dto/Save.class.php');
require_once('../models/mysql/SaveMySqlDAO.class.php');
require_once('../models/mysql/ext/SaveMySqlExtDAO.class.php');
//Savedaily
require_once('../models/dao/SavedailyDAO.class.php');
require_once('../models/dto/Savedaily.class.php');
require_once('../models/mysql/SavedailyMySqlDAO.class.php');
require_once('../models/mysql/ext/SavedailyMySqlExtDAO.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');
//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');
//Billname
require_once('../models/dao/BillnameDAO.class.php');
require_once('../models/dto/Billname.class.php');
require_once('../models/mysql/BillnameMySqlDAO.class.php');
require_once('../models/mysql/ext/BillnameMySqlExtDAO.class.php');
//Billsetting
require_once('../models/dao/BillsettingsDAO.class.php');
require_once('../models/dto/Billsetting.class.php');
require_once('../models/mysql/BillsettingsMySqlDAO.class.php');
require_once('../models/mysql/ext/BillsettingsMySqlExtDAO.class.php');
//User
require_once('../models/dao/UserDAO.class.php');
require_once('../models/dto/User.class.php');
require_once('../models/mysql/UserMySqlDAO.class.php');
require_once('../models/mysql/ext/UserMySqlExtDAO.class.php');
//Productunit
require_once('../models/dao/ProductunitDAO.class.php');
require_once('../models/dto/Productunit.class.php');
require_once('../models/mysql/ProductunitMySqlDAO.class.php');
require_once('../models/mysql/ext/ProductunitMySqlExtDAO.class.php');
//Productcat
require_once('../models/dao/ProductcatDAO.class.php');
require_once('../models/dto/Productcat.class.php');
require_once('../models/mysql/ProductcatMySqlDAO.class.php');
require_once('../models/mysql/ext/ProductcatMySqlExtDAO.class.php');
//Unit
require_once('../models/dao/UnitDAO.class.php');
require_once('../models/dto/Unit.class.php');
require_once('../models/mysql/UnitMySqlDAO.class.php');
require_once('../models/mysql/ext/UnitMySqlExtDAO.class.php');
//Productserial
require_once('../models/dao/ProductserialDAO.class.php');
require_once('../models/dto/Productserial.class.php');
require_once('../models/mysql/ProductserialMySqlDAO.class.php');
require_once('../models/mysql/ext/ProductserialMySqlExtDAO.class.php');
//Programsetting
require_once('../models/dao/ProgramsettingsDAO.class.php');
require_once('../models/dto/Programsetting.class.php');
require_once('../models/mysql/ProgramsettingsMySqlDAO.class.php');
require_once('../models/mysql/ext/ProgramsettingsMySqlExtDAO.class.php');
//Soldserialproduct
require_once('../models/dao/SoldserialproductDAO.class.php');
require_once('../models/dto/Soldserialproduct.class.php');
require_once('../models/mysql/SoldserialproductMySqlDAO.class.php');
require_once('../models/mysql/ext/SoldserialproductMySqlExtDAO.class.php');

//user
require_once('../models/dao/UserDAO.class.php');
require_once('../models/dto/User.class.php');
require_once('../models/mysql/UserMySqlDAO.class.php');
require_once('../models/mysql/ext/UserMySqlExtDAO.class.php');

//Usergroup
require_once('../models/dao/UsergroupDAO.class.php');
require_once('../models/dto/Usergroup.class.php');
require_once('../models/mysql/UsergroupMySqlDAO.class.php');
require_once('../models/mysql/ext/UsergroupMySqlExtDAO.class.php');

//Productcat
require_once('../models/dao/ProductcatDAO.class.php');
require_once('../models/dto/Productcat.class.php');
require_once('../models/mysql/ProductcatMySqlDAO.class.php');
require_once('../models/mysql/ext/ProductcatMySqlExtDAO.class.php');


require_once('../models/dao/SellbilldetailorderDAO.class.php');
require_once('../models/dto/Sellbilldetailorder.class.php');
require_once('../models/mysql/SellbilldetailorderMySqlDAO.class.php');
require_once('../models/mysql/ext/SellbilldetailorderMySqlExtDAO.class.php');

require_once('../models/dao/SellbillorderDAO.class.php');
require_once('../models/dto/Sellbillorder.class.php');
require_once('../models/mysql/SellbillorderMySqlDAO.class.php');
require_once('../models/mysql/ext/SellbillorderMySqlExtDAO.class.php');
//
require_once('../models/dao/SizecolorDAO.class.php');
require_once('../models/dto/Sizecolor.class.php');
require_once('../models/mysql/SizecolorMySqlDAO.class.php');
require_once('../models/mysql/ext/SizecolorMySqlExtDAO.class.php');
//
require_once('../models/dao/SizecolorstoredetailDAO.class.php');
require_once('../models/dto/Sizecolorstoredetail.class.php');
require_once('../models/mysql/SizecolorstoredetailMySqlDAO.class.php');
require_once('../models/mysql/ext/SizecolorstoredetailMySqlExtDAO.class.php');

//get the do the action

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

  Controller Name :- sellbillController

  OPERTATION in Controller

  1-display add form
  2- add in sellbill, sellbilldetail, sellbillandrutern, sellandruternbilldetail, returnsellbill, returnsellbilldetail tbl
  3- display sucess or error

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

//handling saveid session
//here the global templates
//here goes the instances and general variables
//Sellbilldetailorder
$Sellbilldetailorder = new Sellbilldetailorder();
$SellbilldetailorderDAO = new SellbilldetailorderMySqlDAO();
$SellbilldetailorderEX = new SellbilldetailorderMySqlExtDAO();

//Sellbillorder
$Sellbillorder = new Sellbillorder();
$SellbillorderDAO = new SellbillorderMySqlDAO();
$SellbillorderEX = new SellbillorderMySqlExtDAO();
//Sellbill
$mySellbill = new Sellbill();
$mySellbillRecord = new SellbillMySqlDAO();
$mySellbillEx = new SellbillMySqlExtDAO();
//Sellbilldetail
$mySellbilldetail = new Sellbilldetail();
$mySellbilldetailRecord = new SellbilldetailMySqlDAO();
$mySellbilldetailEx = new SellbilldetailMySqlExtDAO();
//Returnsellbill
$myReturnsellbill = new Returnsellbill();
$myReturnsellbillRecord = new ReturnsellbillMySqlDAO();
$myReturnsellbillEx = new ReturnsellbillMySqlExtDAO();


//Returnsellbilldetail
$myReturnsellbilldetail = new Returnsellbilldetail();
$myReturnsellbilldetailRecord = new ReturnsellbilldetailMySqlDAO();
$myReturnsellbilldetailEx = new ReturnsellbilldetailMySqlExtDAO();

//Productcat
$productCatDAO = new ProductcatMySqlDAO();
$productCatExt = new ProductcatMySqlExtDAO();


//Sellbillandrutern
$mySellbillandrutern = new Sellbillandrutern();
$mySellbillandruternRecord = new SellbillandruternMySqlDAO();
$mySellbillandruternEx = new SellbillandruternMySqlExtDAO();
//Sellandruternbilldetail
$mySellandruternbilldetail = new Sellandruternbilldetail();
$mySellandruternbilldetailRecord = new SellandruternbilldetailMySqlDAO();
$mySellandruternbilldetailEx = new SellandruternbilldetailMySqlExtDAO();
//Storereport
$myStorereport = new Storereport();
$myStorereportRecord = new StorereportMySqlDAO();
$myStorereportEx = new StorereportMySqlExtDAO();
//Storedetail
$myStoredetailEx = new StoredetailMySqlExtDAO();
$myStoredetailRecord = new StoredetailMySqlDAO();
//Store
$myStoreRecord = new StoreMySqlDAO();
//Product
$myProductRecord = new ProductMySqlDAO();
$myProductEx = new ProductMySqlExtDAO();
//save
$mySave = new Save();
$mySaveRecord = new SaveMySqlDAO();
$mySaveEx = new SaveMySqlExtDAO();
//savedaily
$mySavedaily = new Savedaily();
$mySavedailyRecord = new SavedailyMySqlDAO();
$mySavedailyEx = new SavedailyMySqlExtDAO();
//Client
$myClientRecord = new ClientMySqlDAO();
$myClient = new Client();
$myClientEx = new ClientMySqlExtDAO();
//Clientdebtchange
$myClientdebtchange = new Clientdebtchange();
$myClientdebtchangeRecord = new ClientdebtchangeMySqlDAO();
//Billname
$myBillnameRecord = new BillnameMySqlDAO();
$myBillnameEx = new BillnameMySqlExtDAO();
//Billsetting
$myBillsettingEx = new BillsettingsMySqlExtDAO();
//User
$myUserEx = new UserMySqlExtDAO();

//Productunit
$myProductunitEx = new ProductunitMySqlExtDAO();
//$Productunit= new Productunit();
//$ProductunitDAO= new ProductunitDAO();
//Productcat
$myProductcatRecord = new ProductcatMySqlDAO();
$myProductcatEx = new ProductcatMySqlExtDAO();
//Unit
$myUnitRecord = new UnitMySqlDAO();
//Productserial
$myProductserial = new Productserial();
$myProductserialEx = new ProductserialMySqlExtDAO();
//Programsetting
$ProgramsettingDAO = new ProgramsettingsMySqlDAO();
$programSettingExt = new ProgramsettingsMySqlExtDAO();
//Soldserialproduct
$soldSerialProduct = new Soldserialproduct();
$soldSerialProductDAO = new SoldserialproductMySqlDAO();
$soldSerialProductExt = new SoldserialproductMySqlExtDAO();

$user = new User();
$userDAO = new UserMySqlDAO();
$userEX = new UserMySqlExtDAO();

//Usergroup
$Usergroup = new Usergroup();
$UsergroupDAO = new UsergroupMySqlDAO();
$UsergroupEX = new UsergroupMySqlExtDAO();

//Costcenterdetail
$Costcenterdetail = new Costcenterdetail();
$CostcenterdetailDAO = new CostcenterdetailMySqlDAO();
$CostcenterdetailEX = new CostcenterdetailMySqlExtDAO();

//Costcenter
$Costcenter = new Costcenter();
$CostcenterDAO = new CostcenterMySqlDAO();
$CostcenterEX = new CostcenterMySqlExtDAO();
//
$sizeColor = new Sizecolor();
$sizeColorDAO = new SizecolorMySqlDAO();
$sizeColorEX = new SizecolorMySqlExtDAO();
//
$sizeColorStoreDetail = new Sizecolorstoredetail();
$sizeColorStoreDetailDAO = new SizecolorstoredetailMySqlDAO();
$sizeColorStoreDetailEX = new SizecolorstoredetailMySqlExtDAO();

//check and use the condition that suites this action


eval(base64_decode("ZnVuY3Rpb24gZ2VuZXJhdGVVVUlEKCkgewogICAgJGhvc3RuYW1lID0gZXhwbG9kZSgnY29udHJvbGxlcnMnLCAkX1NFUlZFUlsnU0NSSVBUX1VSSSddKVswXTsgLy9nZXRob3N0bmFtZSgpOwogICAgJGhvc3RuYW1lID0gc3RyX3JlcGxhY2UoYXJyYXkoImh0dHA6Ly8iLCAiaHR0cHM6Ly8iKSwgIiIsICRob3N0bmFtZSk7CgogICAgLy8gR2VuZXJhdGUgYW4gTUQ1IGhhc2ggb2YgdGhlIGlucHV0CiAgICAkZGF0YSA9IG1kNSgkaG9zdG5hbWUpOwogICAgLy8gRm9ybWF0IHRoZSBoYXNoIGFzIGEgVVVJRAogICAgJHV1aWQgPSBzcHJpbnRmKAogICAgICAgICAgICAnJTA4cy0lMDRzLSUwNHgtJTA0eC0lMTJzJywKICAgICAgICAgICAgc3Vic3RyKCRkYXRhLCAwLCA4KSwKICAgICAgICAgICAgc3Vic3RyKCRkYXRhLCA4LCA0KSwKICAgICAgICAgICAgKGhleGRlYyhzdWJzdHIoJGRhdGEsIDEyLCA0KSkgJiAweDBmZmYpIHwgMHg0MDAwLAogICAgICAgICAgICAoaGV4ZGVjKHN1YnN0cigkZGF0YSwgMTYsIDQpKSAmIDB4M2ZmZikgfCAweDgwMDAsCiAgICAgICAgICAgIHN1YnN0cigkZGF0YSwgMjAsIDEyKQogICAgKTsKICAgICR1dWlkID0gc3RyX3JlcGxhY2UoYXJyYXkoJy0nKSwgJycsICR1dWlkKTsKICAgIHJldHVybiAkdXVpZDsKfQ=="));
eval(base64_decode("ZnVuY3Rpb24gc2VyaWFsY2hlY2soKSB7CiAgICBpZiAoc3RydG91cHBlcihzdWJzdHIoUEhQX09TLCAwLCAzKSkgPT09ICdXSU4nKSB7CiAgICAgICAgLy91dWlkIG9mIHdpbmRvd3MKICAgICAgICBleGVjKCdDOlxXaW5kb3dzXFN5c3RlbTMyXHdiZW1cd21pYyBjc3Byb2R1Y3QgZ2V0ICJVVUlEIicsICRtYWNhZGRyZXNzLCAkaXNFeGVjdXRlZCk7CiAgICAgICAgJG1hY2FkZHJlc3MgPSAkbWFjYWRkcmVzc1sxXTsKICAgICAgICAkbWFjID0gc3RyX3JlcGxhY2UoYXJyYXkoJy0nKSwgJycsICRtYWNhZGRyZXNzKTsKICAgIH0gZWxzZSB7Ly9ub3Qgd2luZG93cyB1c2UgbGludXggbWFjCiAgICAgICAgJG1hYyA9IGdlbmVyYXRlVVVJRCgpOwogICAgfQoKICAgICRyYW5kb21fc2FsdCA9IGhhc2goJ3NoYTUxMicsICcxMzA1Jyk7CiAgICAvLyBDcmVhdGUgc2FsdGVkIHBhc3N3b3JkCiAgICAkaGFzaGVkTWFjID0gaGFzaCgnc2hhNTEyJywgJG1hYyAuICRyYW5kb21fc2FsdCk7CiAgICByZXR1cm4gJGhhc2hlZE1hYzsKfQ=="));
eval(base64_decode("JHNlcmlhbENhbCA9IHNlcmlhbGNoZWNrKCk7CmlmICgoJHByb2ctPnNlcmlhbCAhPSAkc2VyaWFsQ2FsICYmICRwcm9nLT5zZXJpYWwyICE9ICRzZXJpYWxDYWwpIHx8ICgkX1NFU1NJT05bJ2xpY19kYXRldG8nXSA8IGRhdGUoJ1ktbS1kJykgJiYgZW1wdHkoJF9QT1NUWyJlcnBEQiJdKSkpIHsKICAgIC8vc2VuZCB0aGUgdXNlciB0byB0aGUgbG9nb3V0IHBhZ2UKICAgIGhlYWRlcigibG9jYXRpb246bG9nb3V0LnBocCIpOwogICAgZXhpdCgpOwp9"));

function deletesellbill($sellbillid, $savePaymentDateWithBillDate = 0)
{
    global $mySellbill;
    global $mySellbillRecord;
    global $mySellbillEx;
    global $mySellbilldetail;
    global $mySellbilldetailRecord;
    global $myProductserialEx;
    global $CostcenterdetailEX;
    global $soldSerialProductExt;
    global $sizeColorStoreDetailDAO;
    global $sizeColorStoreDetailEX;
    global $bankAccountEX;
    global $bankAccountDAO;
    global $bankAccount;
    global $sellbillId; //nedded for collective product##fatma
    global $sellbillDate;
    $sellbillId = $sellbillid;


    try {

        $sellbillData = $mySellbillRecord->load($sellbillid);
        $mydate = $sellbillData->sellbilldate;
        $CostcenterdetailEX->updatedellbytypeandmodelid(0, $sellbillid, 1);


        $sellbilltotalPayed = $sellbillData->sellbilltotalpayed;
        $sellbillstoreId = $sellbillData->sellbillstoreid;
        $sellbilltotaldeptAfter = $sellbillData->sellbilltotaldeptafter;
        $sellbilltotaldeptBefor = $sellbillData->sellbilltotaldeptbefor;
        $sellbillclientId = $sellbillData->sellbillclientid;
        $sellbillFinalbill = $sellbillData->sellbillfinalbill;
        $sellbillsaveId = $sellbillData->sellbillsaveid;

        $totalOperationCost = $sellbillData->sellbillaftertotalbill;

        $sellbilltotalBill = $sellbillData->sellbilltotalbill;
        $sellbillDiscount = $sellbillData->sellbilldiscount;
        $sellbillDiscountType = $sellbillData->sellbilldiscounttype;
        $sellbillAftertotalBill = $sellbillData->sellbillaftertotalbill;

        $sellbillDate = $sellbillData->sellbilldate;

        $visa = $sellbillData->visaPayed;
        $visaAccount = $sellbillData->visaAccountId;
        if (empty($visaAccount)) {
            $visa = 0;
        }
        $isBankAccountTransfer = $sellbillData->isBankAccountTransfer;

        ##get $billTotalBeforeDiscount
        $billTotalBeforeDiscount = $sellbilltotalBill;
        ##get $billDiscountVal
        $billDiscountVal = $sellbillDiscount;
        if ($sellbillDiscountType == "2") {
            $billDiscountVal = ($sellbillDiscount / 100) * $billTotalBeforeDiscount;
            $billDiscountVal = round($billDiscountVal, 2);
        }
        ########################################################################
        $note;
        $saveValuebeforeValid = 1;

        /////////////////check save value before //////////////
        //get save value
        $saveValueBefore = getSaveValueBefore($sellbillsaveId);
        $saveValueafterValid = $saveValueBefore - $sellbilltotalPayed - $visa;
        if ($saveValueafterValid >= 0) {
            $saveValuebeforeValid = 1;

            $note = "success";
        } else {
            $saveValuebeforeValid = 0;
            //return $saveValuebeforeValid;

            $note = "لا يوجد بالخزنة المبلغ الكافى لحذف الفاتورة";
        }



        $mySellbill->conditions = 1;
        $mySellbill->sellbillsysdate = date("Y-m-d H:i:s");
        //$mySellbill->userid = $_SESSION['userid'];
        $mySellbill->userid = $sellbillData->userid;
        $mySellbill->delbyuserid = $_SESSION['userid'];
        $mySellbill->sellbillid = $sellbillid;

        $mySellbillEx->updateConditions($mySellbill);


        $sellbilldetailData = $mySellbilldetailRecord->queryBySellbillid($sellbillid);

        foreach ($sellbilldetailData as $sellbilldetail) {
            $productId = $sellbilldetail->sellbilldetailproductid;
            $quantity = $sellbilldetail->sellbilldetailquantity;
            $scunitname = $sellbilldetail->otherdetailquantity;
            $productunitId = $sellbilldetail->productunitid;
            $detailId = $sellbilldetail->sellbilldetailid;
            $totlPrice = $sellbilldetail->sellbilldetailtotalprice;
            $sizeId = $sellbilldetail->sizeid;
            $colorId = $sellbilldetail->colorid;
            $proSerials = $sellbilldetail->soldSerialsInDetails;
            $sellbillstoreId = $sellbilldetail->storeid;

            $sizeColorStoreDetailId = $sizeColorStoreDetailEX->getIdByProductStoreSizeAndColorEX($productId, $sellbillstoreId, $sizeId, $colorId);

            if (isset($productId) && $productId != '-1' && $productId != "") {

                $productunitData = loadProductUnitWithProductAndUnit($productId, $productunitId);
                $productnumber = $productunitData->productnumber;
                $finalquantity = $quantity * $productnumber;


                //
                decreaseSellQuantityHandleBuyPricesHistoryBook($sellbilldetail->buyPricesHistoryBookIdQuantity);

                if (!empty($proSerials)) {
                    increaseProductParcodeSerialQuantity($productId, $sizeId, $colorId, $finalquantity, $proSerials, $sellbillid, $sellbillclientId, $detailId, 0, 'del');
                } else {

                    $parcode = $sellbilldetail->parcode;
                    $issold = $myProductserialEx->queryallisdSerial($productId, $parcode, " and sizeid=$sizeId and colorid=$colorId ");


                    if (count($issold) > 0) {


                        $soldSerialProduct->quantity = $finalquantity;
                        $soldSerialProduct->sellbilltype = 0;
                        $soldSerialProduct->sellbillid = $sellbillid;
                        $soldSerialProduct->del = 1;
                        $soldSerialProduct->productserailid = $issold->productserailid;

                        //$mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial($soldSerialProduct);
                        $mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial2($soldSerialProduct);
                        //print_r($mysoldSerialProduct);
                        if (count($mysoldSerialProduct) > 0) {


                            //$soldSerialProductExt->updatedel($soldSerialProduct);
                            $soldSerialProductExt->updatedel2($soldSerialProduct);
                            $productserailid = $mysoldSerialProduct->productserailid;

                            updateSerailQty_ForReturn($productserailid, $finalquantity);
                        }
                    }
                }


                $isService = isService($productId);
                if ($isService == 0) { //if product
                    //get storeto productquantity before change
                    $storedetailData = getStoreDetails($sellbillstoreId, $productId, 0, $sizeColorStoreDetailId, $sizeId, $colorId);

                    $allStoredetailData = $storedetailData[0];
                    $storedetailId = $storedetailData[1];
                    $productquantityBefore = $storedetailData[2];

                    if (count($allStoredetailData) > 0) {

                        //update productquantity in storedetail
                        $productquantityToAfter = increaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity, "sellbilldetailid", $detailId, $productId, "sellbilldetail", $totlPrice, $billDiscountVal, $billTotalBeforeDiscount, 0, 0, $sizeColorStoreDetailId, $sizeId, $colorId);


                        //insert in storereport
                        insertStorereportupdate($productId, $sellbillstoreId, $finalquantity, $productquantityBefore, $productquantityToAfter, 0, $sellbillid, "تعديل فاتورة مبيعات", "sellbillController.php", $mydate, $sizeId, $colorId);
                    } else {
                        //insert in storedetail tbl
                        insertStoredetailupdate($sellbillstoreId, $productId, $finalquantity, $mydate, "sellbilldetailid", $detailId, $productId, "sellbilldetail", $totlPrice, $billDiscountVal, $billTotalBeforeDiscount, 0, 0, $sizeColorStoreDetailId, $sizeId, $colorId);


                        //insert in storereport
                        insertStorereportupdate($productId, $sellbillstoreId, $finalquantity, 0, $finalquantity, 0, $sellbillid, "تعديل فاتورة مبيعات", "sellbillController.php", $mydate, $sizeId, $colorId);
                    }

                    //other unit
                    if ($scunitname > 0) {
                        $allStoredetailData2 = getStoreDetails($sellbillstoreId, $productId, 1, $sizeColorStoreDetailId, $sizeId, $colorId);
                        $allStoredetailDataother = $allStoredetailData2[0];
                        $storeDetailIdother = $allStoredetailData2[1];
                        $productQuantityBeforeother = $allStoredetailData2[2];



                        if (count($allStoredetailDataother) > 0 && $scunitname > 0) {
                            //update productquantity in storedetail

                            $finalquantityother = $productQuantityBeforeother + $scunitname;
                            $productQuantityAfter = updateProductQuantitotherunit2($storeDetailIdother, $finalquantityother, 1);

                            //insert in storereport
                            insertStorereportupdate2($productId, $sellbillstoreId, $scunitname, $productQuantityBeforeother, $productQuantityAfter, 0, $sellbillid, "تعديل فاتورة مبيعات", "sellbillController.php", $mydate, 1);
                        } else {
                            //insert in storedetail tbl
                            if ($scunitname > 0) {
                                insertStoredetailupdate2($sellbillstoreId, $productId, ($scunitname), $mydate, 1);

                                //insert in storereport
                                insertStorereportupdate2($productId, $sellbillstoreId, $scunitname, 0, ($scunitname), 0, $sellbillid, "تعديل فاتورة مبيعات", "sellbillController.php", $mydate, 1);
                            }
                        }
                    }
                }
            }
        }


        $sellbilltotalPayed = $sellbilltotalPayed - $visa;
        if ($sellbillclientId != 0) {
            //check if sellbilltotaldeptAfter change from sellbilltotaldeptBefor
            //if($sellbilltotaldeptAfter != $sellbilltotaldeptBefor)
            {
                $clientData = getClientDataFromClientInUseSP($sellbillclientId);
                //$clientData = loadClientDataById($sellbillclientId);
                $clientdeptBefor = $clientData->clientdebt;
                $clientdeptAfter = ($clientData->clientdebt) - $sellbillFinalbill;

                //update rawmaterialssupplierdebt
                updateClientDebt($sellbillclientId, $clientdeptAfter);

                insertClientdebtchangeupdate($sellbillclientId, $clientdeptBefor, $sellbillFinalbill, 1, "تعديل فاتورة مبيعات", $sellbillid, $clientdeptAfter, "sellbillController.php", "تعديل فاتورة مبيعات", $totalOperationCost, $mydate, $visa, $visaAccount, $sellbilltotalPayed);
                markClientAsNOTInUse($sellbillclientId);
            }
        }


        //check if payed or not to change save value
        $payDateToRecord = date('Y-m-d H:i:s');
        if ($savePaymentDateWithBillDate == 1) {
            $payDateToRecord = $sellbillDate;
        }
        if ($sellbilltotalPayed > 0) {

            //get saveValue before and saveValue after mins sellbilltotalPayed
            $saveData = getSaveValueAndMins($sellbillsaveId, $sellbilltotalPayed);
            $saveId = $saveData[0];
            $saveValuebefore = $saveData[1];
            $saveValueafter = $saveData[2];
            ##curr conversion
            $sellbilltotalPayedSaveCurr = $saveData[3];

            //update saveFrom value after add transfer
            updateSave($saveId, $saveValueafter);

            //insert into savedaily tbl from savefrom
            $_SESSION['client_id'] = $sellbillclientId;
            insertSavedailyupdate($saveValuebefore, $sellbilltotalPayedSaveCurr, 1, $saveId, "تعديل فاتورة مبيعات", $sellbillid, $saveValueafter, "sellbillController.php", $payDateToRecord);
            unset($_SESSION['client_id']);
        }

        if ($visa != 0 && $visaAccount > 0) {
            $visaAccountData = $bankAccountDAO->load($visaAccount);
            if ($isBankAccountTransfer == 1) {
                $visaDisPerVal = 0;
            } else {
                $visaDisPerVal = $visaAccountData->visaDisPer * .01 * $visa;
            }
            $accountBefore = $visaAccountData->accountbeginingbalance;
            $visaAccountData->accountbeginingbalance = $accountBefore - $visa + $visaDisPerVal;
            $visaAccountData->accountdate = date('Y-m-d');
            $visaAccountData->accountid = $visaAccount;
            $bankAccountEX->updateacount($visaAccountData);


            //Insert in accountmovement table the payment
            $afterVal = $accountBefore - $visa;
            insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $accountBefore, $visa, $afterVal, 1, "الغاء سداد فاتورة", "sellbillController.php", $sellbillid, $payDateToRecord);

            //Insert in accountmovement table the disount per
            if ($isBankAccountTransfer != 1) {
                $afterVal_AfterDisc = $afterVal + $visaDisPerVal;
                insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $afterVal, $visaDisPerVal, $afterVal_AfterDisc, 0, "الغاء نسبة خصم الفيزا من تحصيل فاتورة", "sellbillController.php", $sellbillid, $payDateToRecord);
            }
        }

        quickProfitBill($sellbilltotalBill, 0, $billDiscountVal, $sellbillclientId, 0);
    } catch (Exception $e) {
        $note = "حدث خطأ اثناء حذف الفاتورة";
    }

    return array($saveValuebeforeValid, $note);
}

function deletereturnsellbillid($returnsellbillid)
{
    global $myReturnsellbill;
    global $myReturnsellbillRecord;
    global $myReturnsellbillEx;
    global $myReturnsellbilldetailRecord;
    global $myProductserialEx;
    global $soldSerialProductExt;
    global $CostcenterdetailEX;
    global $sizeColorStoreDetailDAO;
    global $sizeColorStoreDetailEX;
    global $bankAccountEX;
    global $bankAccountDAO;
    global $bankAccount;
    global $sellbillId; //nedded for collective product##fatma
    global $sellbillDate;
    $sellbillId = $returnsellbillid;


    $note;
    try {
        $returnsellbillData = $myReturnsellbillRecord->load($returnsellbillid);
        $CostcenterdetailEX->updatedellbytypeandmodelid(1, $returnsellbillid, 1);
        $mydate = $returnsellbillData->returnsellbilldate;
        $returnsellbilltotalPayed = $returnsellbillData->returnsellbilltotalpayed;
        $returnsellbillStoreId = $returnsellbillData->returnsellbillstoreid;
        $returnsellbilltotaldeptAfter = $returnsellbillData->returnsellbilltotaldeptafter;
        $returnsellbilltotaldeptBefor = $returnsellbillData->returnsellbilltotaldeptbefor;
        $returnsellbillClientId = $returnsellbillData->returnsellbillclientid;
        $returnsellbillFinalBill = $returnsellbillData->returnsellbillfinalbill;
        $returnsellbillSaveId = $returnsellbillData->returnsellbillsaveid;

        $totalOperationCost = $returnsellbillData->returnsellbillaftertotalbill;

        $sellbilltotalBill = $returnsellbillData->returnsellbilltotalbill;
        $sellbillDiscount = $returnsellbillData->returnsellbilldiscount;
        $sellbillDiscountType = $returnsellbillData->returnsellbilldiscounttype;
        $sellbillAftertotalBill = $returnsellbillData->returnsellbillaftertotalbill;

        $sellbillDate = $returnsellbillData->returnsellbilldate;

        $visa = $returnsellbillData->visaPayed;
        $visaAccount = $returnsellbillData->visaAccountId;
        if (empty($visaAccount)) {
            $visa = 0;
        }
        $isBankAccountTransfer = $returnsellbillData->isBankAccountTransfer;

        ##get $billTotalBeforeDiscount
        $billTotalBeforeDiscount = $sellbilltotalBill;
        ##get $billDiscountVal
        $billDiscountVal = $sellbillDiscount;
        if ($sellbillDiscountType == "2") {
            $billDiscountVal = ($sellbillDiscount / 100) * $billTotalBeforeDiscount;
            $billDiscountVal = round($billDiscountVal, 2);
        }
        ########################################################################
        $productsBeforeValid = 1;

        $returnsellbilldetailData = $myReturnsellbilldetailRecord->queryByReturnsellbillid($returnsellbillid);

        foreach ($returnsellbilldetailData as $returnsellbilldetail) {
            $productId = $returnsellbilldetail->returnsellbilldetailproductid;
            $productQuantity = $returnsellbilldetail->returnsellbilldetailquantity;
            $sizeId = $returnsellbilldetail->sizeid;
            $colorId = $returnsellbilldetail->colorid;

            $sizeColorStoreDetailId = $sizeColorStoreDetailEX->getIdByProductStoreSizeAndColorEX($productId, $returnsellbillStoreId, $sizeId, $colorId);
            $isService = isService($productId);
            if ($isService == 0) { //if product
                //get storefrom productquantity before change
                $storedetailData = getStoredetailData($returnsellbillStoreId, $productId, $sizeColorStoreDetailId);

                $allStoredetailData = $storedetailData[0];
                $storedetailId = $storedetailData[1];
                $productquantityBefore = $storedetailData[2];

                if ($productquantityBefore > 0 && count($allStoredetailData) > 0) {
                    $productsAfterValid = $productquantityBefore - $productQuantity;

                    if ($productsAfterValid >= 0) {
                        $productsBeforeValid = 1;

                        $note = "success";
                    } else {
                        $productsBeforeValid = 0;
                        $note = "لا يوجد بالمخزن الكمية الكافية لحذف الفاتورة";

                        //return $productsBeforeValid;
                    }
                } else {
                    $productsBeforeValid = 0;
                    $note = "لا يوجد بالمخزن الكمية الكافية لحذف الفاتورة";
                    //return $productsBeforeValid;
                }
            }
        }



        $myReturnsellbill->conditions = 1;
        $myReturnsellbill->returnsellbillsysdate = date("Y-m-d");
        //$myReturnsellbill->userid = $_SESSION['userid'];
        $myReturnsellbill->userid = $returnsellbillData->userid;
        $myReturnsellbill->delbyuserid = $_SESSION['userid'];
        $myReturnsellbill->returnsellbillid = $returnsellbillid;

        $myReturnsellbillEx->updateConditions($myReturnsellbill);


        foreach ($returnsellbilldetailData as $returnsellbilldetail) {
            $productId = $returnsellbilldetail->returnsellbilldetailproductid;

            if ($productId != '') {

                $productunitId = $returnsellbilldetail->productunitid;



                $quantity = $returnsellbilldetail->returnsellbilldetailquantity;
                $scunitname = $returnsellbilldetail->otherdetailquantity;
                $detailId = $returnsellbilldetail->returnsellbilldetailid;
                $totlPrice = $returnsellbilldetail->returnsellbilldetailtotalprice;
                $sizeId = $returnsellbilldetail->sizeid;
                $colorId = $returnsellbilldetail->colorid;
                $proSerials = $returnsellbilldetail->soldSerialsInDetails;
                $returnsellbillStoreId = $returnsellbilldetail->storeid;
                $sizeColorStoreDetailId = $sizeColorStoreDetailEX->getIdByProductStoreSizeAndColorEX($productId, $returnsellbillStoreId, $sizeId, $colorId);

                $productunitData = loadProductUnitWithProductAndUnit($productId, $productunitId);


                $productnumber = $productunitData->productnumber;

                $finalquantity = $quantity * $productnumber;

                if (!empty($proSerials)) {
                    decreaseProductParcodeSerialQuantity($productId, $sizeId, $colorId, $finalquantity, $proSerials, $returnsellbillid, $returnsellbillClientId, $detailId, 3, 'del');
                } else {
                    $parcode = $returnsellbilldetail->parcode;
                    $issold = $myProductserialEx->queryallisdSerial($productId, $parcode, " and sizeid=$sizeId and colorid=$colorId ");


                    if (count($issold) > 0) {


                        $soldSerialProduct->quantity = $finalquantity;
                        $soldSerialProduct->sellbilltype = 3;
                        $soldSerialProduct->sellbillid = $returnsellbillid;
                        $soldSerialProduct->del = 1;
                        $soldSerialProduct->productserailid = $issold->productserailid;

                        //$mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial($soldSerialProduct);
                        $mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial2($soldSerialProduct);
                        //print_r($mysoldSerialProduct);
                        if (count($mysoldSerialProduct) > 0) {


                            //$soldSerialProductExt->updatedel($soldSerialProduct);
                            $soldSerialProductExt->updatedel2($soldSerialProduct);
                            $productserailid = $mysoldSerialProduct->productserailid;

                            updateSerailQty($productserailid, $finalquantity);
                            //insertIntoSoldSerialProduct($productserailid, $finalquantity, $returnsellbillid, 3, $returnsellbillClientId);
                        } else {

                            $soldSerialProduct->quantity = $finalquantity;
                            $soldSerialProduct->sellbilltype = 3;
                            $soldSerialProduct->sellbillid = $returnsellbillid;
                            $soldSerialProduct->del = 1;
                            $soldSerialProduct->productserailid = $issold->productserailid;

                            //$mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial($soldSerialProduct);
                            $mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial2($soldSerialProduct);
                            if (count($mysoldSerialProduct) > 0) {


                                //$soldSerialProductExt->updatedel($soldSerialProduct);
                                $soldSerialProductExt->updatedel2($soldSerialProduct);
                                $productserailid = $mysoldSerialProduct->productserailid;

                                updateSerailQty($productserailid, $finalquantity);
                                //insertIntoSoldSerialProduct($productserailid, $finalquantity, $returnsellbillid, 3, $returnsellbillClientId);
                            }
                        }
                    }
                }

                $isService = isService($productId);
                if ($isService == 0) { //if product
                    //get store productquantity before change
                    $storedetailData = getStoreDetails($returnsellbillStoreId, $productId, 0, $sizeColorStoreDetailId, $sizeId, $colorId);

                    $allStoredetailData = $storedetailData[0];
                    $storedetailId = $storedetailData[1];
                    $productquantityBefore = $storedetailData[2];

                    if (count($allStoredetailData) > 0) {

                        //update productquantity in storedetail
                        $productquantityAfter = decreaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity, "returnsellbilldetailid", $detailId, $productId, "returnsellbilldetail", $totlPrice, $billDiscountVal, $billTotalBeforeDiscount, 1, 0, $sizeColorStoreDetailId, $sizeId, $colorId);



                        //insert in storereport
                        insertStorereportupdate($productId, $returnsellbillStoreId, $finalquantity, $productquantityBefore, $productquantityAfter, 1, $returnsellbillid, "تعديل فاتورة مردودات مبيعات", "returnsellbillController.php", $mydate, $sizeId, $colorId);
                    }

                    //other unit
                    if ($scunitname > 0) {
                        $allStoredetailData2 = getStoreDetails($returnsellbillStoreId, $productId, 1, $sizeColorStoreDetailId, $sizeId, $colorId);
                        $allStoredetailDataother = $allStoredetailData2[0];
                        $storeDetailIdother = $allStoredetailData2[1];
                        $productQuantityBeforeother = $allStoredetailData2[2];



                        if (count($allStoredetailDataother) > 0 && $scunitname > 0) {
                            //update productquantity in storedetail

                            $finalquantityother = $productQuantityBeforeother - $scunitname;
                            $productQuantityAfter = updateProductQuantitotherunit2($storeDetailIdother, $finalquantityother, 1);

                            //insert in storereport
                            insertStorereportupdate2($productId, $returnsellbillStoreId, $scunitname, $productQuantityBeforeother, $productQuantityAfter, 1, $returnsellbillid, "تعديل فاتورة مردودات ", "returnsellbillController.php", $mydate, 1);
                        } else {
                            //insert in storedetail tbl
                            if ($scunitname > 0) {
                                insertStoredetailupdate2($returnsellbillStoreId, $productId, ($scunitname) * -1, $sellbillDate, 1);

                                //insert in storereport
                                insertStorereportupdate2($productId, $returnsellbillStoreId, $scunitname, 0, ($scunitname) * -1, 1, $returnsellbillid, "تعديل فاتورة مردودات ", "returnsellbillController.php", $mydate, 1);
                            }
                        }
                    }
                }
            }
        }




        $returnsellbilltotalPayed = $returnsellbilltotalPayed - $visa;
        if ($returnsellbillClientId != 0) {
            //check if sellbilltotaldeptAfter change from sellbilltotaldeptBefor
            //if($returnsellbilltotaldeptAfter != $returnsellbilltotaldeptBefor)
            {
                $clientData = getClientDataFromClientInUseSP($returnsellbillClientId);
                //$clientData = loadClientDataById($returnsellbillClientId);
                $clientdeptBefor = $clientData->clientdebt;
                $clientdeptAfter = ($clientData->clientdebt) + ($returnsellbillFinalBill * -1);

                //update rawmaterialssupplierdebt
                updateClientDebt($returnsellbillClientId, $clientdeptAfter);

                insertClientdebtchangeupdate($returnsellbillClientId, $clientdeptBefor, abs($returnsellbillFinalBill), 0, "تعديل فاتورة مردودات مبيعات", $returnsellbillid, $clientdeptAfter, "returnsellbillController.php", "تعديل فاتورة مردودات مبيعات", $totalOperationCost, $mydate, $visa, $visaAccount, $returnsellbilltotalPayed);
                markClientAsNOTInUse($returnsellbillClientId);
            }
        }




        //check if payed or not to change save value
        if ($returnsellbilltotalPayed != 0) {

            //get saveValue before and saveValue after mins sellbilltotalPayed
            $saveData = getSaveValueAndPlus($returnsellbillSaveId, abs($returnsellbilltotalPayed));
            $saveId = $saveData[0];
            $saveValuebefore = $saveData[1];
            $saveValueafter = $saveData[2];
            ##curr conversion
            $returnsellbilltotalPayedSaveCurr = $saveData[3];

            //update save value after add sellbill
            updateSave($saveId, $saveValueafter);

            //insert into savedaily tbl from save
            $_SESSION['client_id'] = $returnsellbillClientId;
            insertSavedailyupdate($saveValuebefore, $returnsellbilltotalPayedSaveCurr, 0, $saveId, "تعديل فاتورة مردودات مبيعات", $returnsellbillid, $saveValueafter, "returnsellbillController.php", date("Y-m-d H:i:s"));
            unset($_SESSION['client_id']);
        }
        if ($visa != 0 && $visaAccount > 0) {
            $visaAccountData = $bankAccountDAO->load($visaAccount);
            if ($isBankAccountTransfer == 1) {
                $visaDisPerVal = 0;
            } else {
                $visaDisPerVal = $visaAccountData->visaDisPer * .01 * $visa;
            }
            $accountBefore = $visaAccountData->accountbeginingbalance;
            $visaAccountData->accountbeginingbalance = $accountBefore + $visa - $visaDisPerVal;
            $visaAccountData->accountdate = date('Y-m-d');
            $visaAccountData->accountid = $visaAccount;
            $bankAccountEX->updateacount($visaAccountData);


            //Insert in accountmovement table the payment
            $afterVal = $accountBefore + $visa;
            insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $accountBefore, $visa, $afterVal, 0, "الغاء سداد فاتورة", "returnsellbillController.php", $returnsellbillid, date('Y-m-d H:i:s'));

            //Insert in accountmovement table the disount per
            if ($isBankAccountTransfer != 1) {
                $afterVal_AfterDisc = $afterVal - $visaDisPerVal;
                insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $afterVal, $visaDisPerVal, $afterVal_AfterDisc, 1, "الغاء نسبة خصم الفيزا من تحصيل فاتورة", "returnsellbillController.php", $returnsellbillid, date('Y-m-d H:i:s'));
            }
        }
        quickProfitBill(0, $sellbilltotalBill, $billDiscountVal, $returnsellbillClientId, 0);
    } catch (Exception $e) {
        // echo $e;
        die();
        $note = "حدث خطأ اثناء حذف الفاتورة";
    }

    return array($productsBeforeValid, $note);
}

function deleteSellbillandrutern($sellbillid)
{
    global $mySellbillandrutern;
    global $mySellbillandruternRecord;
    global $mySellbillandruternEx;
    global $mySellandruternbilldetail;
    global $mySellandruternbilldetailRecord;
    global $mySellandruternbilldetailEx;
    global $myProductserialEx;
    global $CostcenterdetailEX;
    global $sizeColorStoreDetailDAO;
    global $sizeColorStoreDetailEX;
    global $soldSerialProductExt;
    global $bankAccountEX;
    global $bankAccountDAO;
    global $bankAccount;
    global $sellbillId; //nedded for collective product##fatma
    global $sellbillDate;
    $sellbillId = $sellbillid;

    try {
        $sellbillandruternData = $mySellbillandruternRecord->load($sellbillid);

        $CostcenterdetailEX->updatedellbytypeandmodelid(2, $sellbillid, 1);

        $mydate = $sellbillandruternData->sellbilldate;
        $sellbilltotalPayed = $sellbillandruternData->sellbilltotalpayed;
        $sellbillstoreId = $sellbillandruternData->sellbillstoreid;
        $sellbilltotaldeptAfter = $sellbillandruternData->sellbilltotaldeptafter;
        $sellbilltotaldeptBefor = $sellbillandruternData->sellbilltotaldeptbefor;
        $sellbillclientId = $sellbillandruternData->sellbillclientid;
        $sellbillFinalbill = $sellbillandruternData->sellbillfinalbill;
        $sellbillsaveId = $sellbillandruternData->sellbillsaveid;
        $sellbilltotalBill = $sellbillandruternData->sellbilltotalbill;
        $sellbillprice = $sellbillandruternData->sellbillprice;
        $returnsellbillprice = $sellbillandruternData->returnsellbillprice;

        $totalOperationCost = $sellbillAftertotalBill = $sellbillandruternData->sellbillaftertotalbill;

        $sellbillDiscount = $sellbillandruternData->sellbilldiscount;
        $sellbillDiscountType = $sellbillandruternData->sellbilldiscounttype;
        $sellbillDate = $sellbillandruternData->sellbilldate;

        $visa = $sellbillandruternData->visaPayed;
        $visaAccount = $sellbillandruternData->visaAccountId;
        if (empty($visaAccount)) {
            $visa = 0;
        }
        $isBankAccountTransfer = $sellbillandruternData->isBankAccountTransfer;

        ##get $billTotalBeforeDiscount
        $billTotalBeforeDiscount = $sellbilltotalBill;
        ##get $billDiscountVal
        $billDiscountVal = $sellbillDiscount;
        if ($sellbillDiscountType == "2") {
            $billDiscountVal = ($sellbillDiscount / 100) * $billTotalBeforeDiscount;
            $billDiscountVal = round($billDiscountVal, 2);
        }
        ########################################################################
        $saveValuebeforeValid = 1;
        $productsBeforeValid = 1;
        $note;

        /////////////////check save value before //////////////
        //get save value
        $saveValueBefore = getSaveValueBefore($sellbillsaveId);
        $saveValueafterValid = $saveValueBefore - $sellbilltotalPayed - $visa;


        if ($saveValueafterValid >= 0) {
            $saveValuebeforeValid = 1;

            $note = "success";
        } else {
            $saveValuebeforeValid = 0;

            $note = "لا يوجد بالخزنة المبلغ الكافى لحذف الفاتورة <br/>";
            //return $saveValuebeforeValid;
        }



        /////////////////check store product quantity before //////////////

        $returnsellbilldetailData = $mySellandruternbilldetailEx->queryWithSellBillIdAndSellType($sellbillid, 1);


        foreach ($returnsellbilldetailData as $returnsellbilldetail) {
            $productId = $returnsellbilldetail->sellbilldetailproductid;
            $productQuantity = $returnsellbilldetail->sellbilldetailquantity;
            $sizeId = $returnsellbilldetail->sizeid;
            $colorId = $returnsellbilldetail->colorid;

            $sizeColorStoreDetailId = $sizeColorStoreDetailEX->getIdByProductStoreSizeAndColorEX($productId, $sellbillstoreId, $sizeId, $colorId);
            $isService = isService($productId);
            if ($isService == 0) { //if product
                //get storefrom productquantity before change
                $storedetailData = getStoredetailData($sellbillstoreId, $productId, $sizeColorStoreDetailId);

                $allStoredetailData = $storedetailData[0];
                $storedetailId = $storedetailData[1];
                $productquantityBefore = $storedetailData[2];

                if ($productquantityBefore > 0 && count($allStoredetailData) > 0) {
                    $productsAfterValid = $productquantityBefore - $productQuantity;

                    if ($productsAfterValid >= 0) {
                        $productsBeforeValid = 1;

                        $note = "success";
                    } else {
                        $productsBeforeValid = 0;

                        $note .= "لا يوجد بالمخزن الكمية الكافية لحذف الفاتورة";

                        //return $productsBeforeValid;
                    }
                } else {
                    $productsBeforeValid = 0;

                    $note .= "لا يوجد بالمخزن الكمية الكافية لحذف الفاتورة";

                    //return $productsBeforeValid;
                }
            }
        }




        //update conditions in sellbillandreturn tbl
        $mySellbillandrutern->conditions = 1;
        $mySellbillandrutern->sellbillsysdate = date("Y-m-d H:i:s");
        //$mySellbillandrutern->userid = $_SESSION['userid'];
        $mySellbillandrutern->userid = $sellbillandruternData->userid;
        $mySellbillandrutern->delbyuserid = $_SESSION['userid'];
        $mySellbillandrutern->sellbillid = $sellbillid;

        $mySellbillandruternEx->updateConditions($mySellbillandrutern);



        foreach ($returnsellbilldetailData as $returnsellbilldetail) {


            $productId = $returnsellbilldetail->sellbilldetailproductid;
            $quantity = $returnsellbilldetail->sellbilldetailquantity;
            $productunitId = $returnsellbilldetail->productunitid;
            $scunitname = $returnsellbilldetail->otherdetailquantity;
            $detailId = $returnsellbilldetail->sellbilldetailid;
            $totlPrice = $returnsellbilldetail->returnsellbilldetailtotalprice;

            $sizeId = $returnsellbilldetail->sizeid;
            $colorId = $returnsellbilldetail->colorid;
            $proSerials = $returnsellbilldetail->soldSerialsInDetails;

            $sizeColorStoreDetailId = $sizeColorStoreDetailEX->getIdByProductStoreSizeAndColorEX($productId, $sellbillstoreId, $sizeId, $colorId);

            $productunitData = loadProductUnitWithProductAndUnit($productId, $productunitId);
            $productnumber = $productunitData->productnumber;
            $finalquantity = $quantity * $productnumber;



            if (!empty($proSerials)) {
                decreaseProductParcodeSerialQuantity($productId, $sizeId, $colorId, $finalquantity, $proSerials, $sellbillid, $sellbillclientId, $detailId, 4, 'del');
            } else {


                $parcode = $returnsellbilldetail->parcode;
                $issold = $myProductserialEx->queryallisdSerial($productId, $parcode, " and sizeid=$sizeId and colorid=$colorId ");


                if (count($issold) > 0) {


                    $soldSerialProduct->quantity = $finalquantity;
                    $soldSerialProduct->sellbilltype = 4; //0;
                    $soldSerialProduct->sellbillid = $sellbillid;
                    $soldSerialProduct->del = 1;
                    $soldSerialProduct->productserailid = $issold->productserailid;

                    //$mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial($soldSerialProduct);
                    $mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial2($soldSerialProduct);
                    //print_r($mysoldSerialProduct);
                    if (count($mysoldSerialProduct) > 0) {


                        //$soldSerialProductExt->updatedel($soldSerialProduct);
                        $soldSerialProductExt->updatedel2($soldSerialProduct);
                        $productserailid = $mysoldSerialProduct->productserailid;

                        updateSerailQty($productserailid, $finalquantity);
                        //insertIntoSoldSerialProduct($productserailid, $finalquantity, $sellbillid, 4,$sellbillclientId);
                    }
                }
            }



            if (isset($productId) && $productId != '-1') {
                $isService = isService($productId);
                if ($isService == 0) { //if product
                    //  print_r('haloo <br>');
                    //get store productquantity before change
                    $storedetailData = getStoreDetails($sellbillstoreId, $productId, 0, $sizeColorStoreDetailId, $sizeId, $colorId);

                    $allStoredetailData = $storedetailData[0];
                    $storedetailId = $storedetailData[1];
                    $productquantityBefore = $storedetailData[2];

                    if (count($allStoredetailData) > 0) {

                        //update productquantity in storedetail
                        $productquantityAfter = decreaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity, "sellbilldetailid", $detailId, $productId, "sellandruternbilldetail", $totlPrice, $billDiscountVal, $billTotalBeforeDiscount, 1, 0, $sizeColorStoreDetailId, $sizeId, $colorId);



                        //insert in storereport
                        insertStorereportupdate($productId, $sellbillstoreId, $finalquantity, $productquantityBefore, $productquantityAfter, 1, $sellbillid, "تعديل فاتورة مبيعات ومردودات", "sellbillandruternController.php", $mydate, $sizeId, $colorId);
                    }

                    //other unit
                    if ($scunitname > 0) {
                        $allStoredetailData2 = getStoreDetails($sellbillstoreId, $productId, 1, $sizeColorStoreDetailId, $sizeId, $colorId);
                        $allStoredetailDataother = $allStoredetailData2[0];
                        $storeDetailIdother = $allStoredetailData2[1];
                        $productQuantityBeforeother = $allStoredetailData2[2];



                        if (count($allStoredetailDataother) > 0 && $scunitname > 0) {
                            //update productquantity in storedetail
                            //  print_r('in if  == 2  ===<br>');
                            $finalquantityother = $productQuantityBeforeother - $scunitname;
                            $productQuantityAfter = updateProductQuantitotherunit2($storeDetailIdother, $finalquantityother, 1);

                            //insert in storereport
                            insertStorereportupdate2($productId, $sellbillstoreId, $scunitname, $productQuantityBeforeother, $productQuantityAfter, 1, $sellbillid, "تعديل فاتورة مردودات  ومبيعات", "sellbillandruternController.php", $mydate, 1);
                        } else {
                            //insert in storedetail tbl
                            if ($scunitname > 0) {
                                //  print_r('in else if   ==2 == <br>');
                                insertStoredetailupdate2($sellbillstoreId, $productId, ($scunitname) * -1, $sellbillDate, 1);

                                //insert in storereport
                                insertStorereportupdate2($productId, $sellbillstoreId, $scunitname, 0, ($scunitname) * -1, 1, $sellbillId, "تعديل فاتورة مردودات  ومبيعات", "sellbillandruternController.php", $mydate, 1);
                            }
                        }
                    }
                }
            }
        }



        //مبيعات
        $sellbilldetailData = $mySellandruternbilldetailEx->queryWithSellBillIdAndSellType($sellbillid, 0);

        foreach ($sellbilldetailData as $sellbilldetail) {
            $productId = $sellbilldetail->sellbilldetailproductid;
            $quantity = $sellbilldetail->sellbilldetailquantity;
            $productunitId = $sellbilldetail->productunitid;
            $scunitname = $sellbilldetail->otherdetailquantity;
            $detailId = $sellbilldetail->sellbilldetailid;
            $totlPrice = $sellbilldetail->sellbilldetailtotalprice;

            $sizeId = $sellbilldetail->sizeid;
            $colorId = $sellbilldetail->colorid;
            $proSerials = $sellbilldetail->soldSerialsInDetails;

            $sizeColorStoreDetailId = $sizeColorStoreDetailEX->getIdByProductStoreSizeAndColorEX($productId, $sellbillstoreId, $sizeId, $colorId);

            $productunitData = loadProductUnitWithProductAndUnit($productId, $productunitId);
            $productnumber = $productunitData->productnumber;
            $finalquantity = $quantity * $productnumber;

            //
            decreaseSellQuantityHandleBuyPricesHistoryBook($sellbilldetail->buyPricesHistoryBookIdQuantity);


            if (!empty($proSerials)) {
                increaseProductParcodeSerialQuantity($productId, $sizeId, $colorId, $finalquantity, $proSerials, $sellbillid, $sellbillclientId, $detailId, 1, 'del');
            } else {


                $parcode = $sellbilldetail->parcode;
                $issold = $myProductserialEx->queryallisdSerial($productId, $parcode, " and sizeid=$sizeId and colorid=$colorId ");


                if (count($issold) > 0) {


                    $soldSerialProduct->quantity = $finalquantity;
                    $soldSerialProduct->sellbilltype = 1; //0;
                    $soldSerialProduct->sellbillid = $sellbillid;
                    $soldSerialProduct->del = 1;
                    $soldSerialProduct->productserailid = $issold->productserailid;

                    //$mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial($soldSerialProduct);
                    $mysoldSerialProduct = $soldSerialProductExt->selectsoldeserial2($soldSerialProduct);
                    //print_r($mysoldSerialProduct);
                    if (count($mysoldSerialProduct) > 0) {


                        //$soldSerialProductExt->updatedel($soldSerialProduct);
                        $soldSerialProductExt->updatedel2($soldSerialProduct);
                        $productserailid = $mysoldSerialProduct->productserailid;

                        updateSerailQty_ForReturn($productserailid, $finalquantity);
                    }
                }
            }


            if (isset($productId) && $productId != '-1' && $productId != "") {
                $isService = isService($productId);
                if ($isService == 0) { //if product
                    //get storeto productquantity before change
                    $storedetailData = getStoreDetails($sellbillstoreId, $productId, 0, $sizeColorStoreDetailId, $sizeId, $colorId);

                    $allStoredetailData = $storedetailData[0];
                    $storedetailId = $storedetailData[1];
                    $productquantityBefore = $storedetailData[2];

                    if (count($allStoredetailData) > 0) {

                        //update productquantity in storedetail
                        $productquantityToAfter = increaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity, "sellbilldetailid", $detailId, $productId, "sellandruternbilldetail", $totlPrice, $billDiscountVal, $billTotalBeforeDiscount, 0, 0, $sizeColorStoreDetailId, $sizeId, $colorId);


                        //insert in storereport
                        insertStorereportupdate($productId, $sellbillstoreId, $finalquantity, $productquantityBefore, $productquantityToAfter, 0, $sellbillid, "تعديل فاتورة مبيعات ومردودات", "sellbillandruternController.php", $mydate, $sizeId, $colorId);
                    } else {
                        //insert in storedetail tbl
                        insertStoredetailupdate($sellbillstoreId, $productId, $finalquantity, $mydate, "sellbilldetailid", $detailId, $productId, "sellandruternbilldetail", $totlPrice, $billDiscountVal, $billTotalBeforeDiscount, 0, 0, $sizeColorStoreDetailId, $sizeId, $colorId);


                        //insert in storereport
                        insertStorereport($productId, $sellbillstoreId, $finalquantity, 0, $finalquantity, 0, $sellbillid, "تعديل فاتورة مبيعات ومردودات", "sellbillandruternController.php", $mydate, $sizeId, $colorId);
                    }

                    //other unit
                    if ($scunitname > 0) {
                        $allStoredetailData2 = getStoreDetails($sellbillstoreId, $productId, 1, $sizeColorStoreDetailId, $sizeId, $colorId);
                        $allStoredetailDataother = $allStoredetailData2[0];
                        $storeDetailIdother = $allStoredetailData2[1];
                        $productQuantityBeforeother = $allStoredetailData2[2];



                        if (count($allStoredetailDataother) > 0 && $scunitname > 0) {
                            //update productquantity in storedetail
                            //  print_r('in if ===1==   <br>');
                            $finalquantityother = $productQuantityBeforeother + $scunitname;
                            $productQuantityAfter = updateProductQuantitotherunit2($storeDetailIdother, $finalquantityother, 1);

                            //insert in storereport
                            insertStorereportupdate2($productId, $sellbillstoreId, $scunitname, $productQuantityBeforeother, $productQuantityAfter, 0, $sellbillid, "تعديل فاتورة مبيعات ومردودات", "sellbillandruternController.php", $mydate, 1);
                        } else {
                            //insert in storedetail tbl
                            if ($scunitname > 0) {

                                // print_r('in if else ==1===    <br>');
                                insertStoredetailupdate2($sellbillstoreId, $productId, ($scunitname), $sellbillDate, 1);

                                //insert in storereport
                                insertStorereportupdate2($productId, $sellbillstoreId, $scunitname, 0, ($scunitname), 0, $sellbillId, "تعديل فاتورة مبيعات ومردودات", "sellbillandruternController.php", $mydate, 1);
                            }
                        }
                    }
                }
            }
        }




        $sellbilltotalPayed = $sellbilltotalPayed - $visa;
        if ($sellbillclientId != 0) {
            //check if sellbilltotaldeptAfter change from sellbilltotaldeptBefor
            //if($sellbilltotaldeptAfter != $sellbilltotaldeptBefor)
            {
                $clientData = getClientDataFromClientInUseSP($sellbillclientId);
                //$clientData = loadClientDataById($sellbillclientId);
                $clientdeptBefor = $clientData->clientdebt;

                if ($sellbilltotalBill < 0) {
                    $sellbillFinalbill = abs($sellbillFinalbill); //* -1;
                    $clientdeptAfter = ($clientData->clientdebt) + $sellbillFinalbill;
                    insertClientdebtchangeupdate($sellbillclientId, $clientdeptBefor, $sellbillFinalbill, 0, "تعديل فاتورة مبيعات ومردودات", $sellbillid, $clientdeptAfter, "sellbillandruternController.php", "تعديل فاتورة  مبيعات ومردودات", $totalOperationCost, $mydate, $visa, $visaAccount, $sellbilltotalPayed);
                } else {
                    $clientdeptAfter = ($clientData->clientdebt) - $sellbillFinalbill;
                    insertClientdebtchangeupdate($sellbillclientId, $clientdeptBefor, $sellbillFinalbill, 1, "حذف فاتورة مبيعات ومردودات", $sellbillid, $clientdeptAfter, "sellbillandruternController.php", "حذف فاتورة  مبيعات ومردودات", $totalOperationCost, $mydate, $visa, $visaAccount, $sellbilltotalPayed);
                }

                //update rawmaterialssupplierdebt
                updateClientDebt($sellbillclientId, $clientdeptAfter);
                markClientAsNOTInUse($sellbillclientId);
            }
        }


        //check if payed or not to change save value
        if ($sellbilltotalPayed != 0) {
            if ($sellbillAftertotalBill > 0) {
                //get saveValue before and saveValue after mins sellbilltotalPayed
                $saveData = getSaveValueAndMins($sellbillsaveId, $sellbilltotalPayed);
                $saveId = $saveData[0];
                $saveValuebefore = $saveData[1];
                $saveValueafter = $saveData[2];
                ##curr conversion
                $sellbilltotalPayedSaveCurr = $saveData[3];

                //update saveFrom value after add transfer
                updateSave($saveId, $saveValueafter);

                //insert into savedaily tbl from savefrom
                $_SESSION['client_id'] = $sellbillclientId;
                insertSavedailyupdate($saveValuebefore, $sellbilltotalPayedSaveCurr, 1, $saveId, "تعديل فاتورة مبيعات ومردودات", $sellbillid, $saveValueafter, "sellbillandruternController.php", date("Y-m-d H:i:s"));
                unset($_SESSION['client_id']);
            } else {
                //get saveValue before and saveValue after mins sellbilltotalPayed
                $saveData = getSaveValueAndPlus($sellbillsaveId, abs($sellbilltotalPayed));
                $saveId = $saveData[0];
                $saveValuebefore = $saveData[1];
                $saveValueafter = $saveData[2];
                ##curr conversion
                $sellbilltotalPayedSaveCurr = $saveData[3];

                //update saveFrom value after add transfer
                updateSave($saveId, $saveValueafter);

                //insert into savedaily tbl from savefrom
                $_SESSION['client_id'] = $sellbillclientId;
                insertSavedaily($saveValuebefore, $sellbilltotalPayedSaveCurr, 0, $saveId, "تعديل فاتورة مبيعات ومردودات", $sellbillid, $saveValueafter, "sellbillandruternController.php", date("Y-m-d H:i:s"));
                unset($_SESSION['client_id']);
            }
        }

        if ($visa != 0 && $visaAccount > 0) {
            if ($sellbillAftertotalBill > 0) {
                $visaAccountData = $bankAccountDAO->load($visaAccount);
                if ($isBankAccountTransfer == 1) {
                    $visaDisPerVal = 0;
                } else {
                    $visaDisPerVal = $visaAccountData->visaDisPer * .01 * $visa;
                }
                $accountBefore = $visaAccountData->accountbeginingbalance;
                $visaAccountData->accountbeginingbalance = $accountBefore - $visa + $visaDisPerVal;
                $visaAccountData->accountdate = date('Y-m-d');
                $visaAccountData->accountid = $visaAccount;
                $bankAccountEX->updateacount($visaAccountData);


                //Insert in accountmovement table the payment
                $afterVal = $accountBefore - $visa;
                insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $accountBefore, $visa, $afterVal, 1, "الغاء سداد فاتورة", "sellbillandruternController.php", $sellbillid, date('Y-m-d H:i:s'));

                //Insert in accountmovement table the disount per
                if ($isBankAccountTransfer != 1) {
                    $afterVal_AfterDisc = $afterVal + $visaDisPerVal;
                    insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $afterVal, $visaDisPerVal, $afterVal_AfterDisc, 0, "الغاء نسبة خصم الفيزا من تحصيل فاتورة", "sellbillandruternController.php", $sellbillid, date('Y-m-d H:i:s'));
                }
            } else {
                $visaAccountData = $bankAccountDAO->load($visaAccount);
                if ($isBankAccountTransfer == 1) {
                    $visaDisPerVal = 0;
                } else {
                    $visaDisPerVal = $visaAccountData->visaDisPer * .01 * $visa;
                }
                $accountBefore = $visaAccountData->accountbeginingbalance;
                $visaAccountData->accountbeginingbalance = $accountBefore + $visa - $visaDisPerVal;
                $visaAccountData->accountdate = date('Y-m-d');
                $visaAccountData->accountid = $visaAccount;
                $bankAccountEX->updateacount($visaAccountData);


                //Insert in accountmovement table the payment
                $afterVal = $accountBefore + $visa;
                insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $accountBefore, $visa, $afterVal, 0, "الغاء سداد فاتورة", "sellbillandruternController.php", $sellbillid, date('Y-m-d H:i:s'));

                //Insert in accountmovement table the disount per
                if ($isBankAccountTransfer != 1) {
                    $afterVal_AfterDisc = $afterVal - $visaDisPerVal;
                    insertBankAccountMovement($visaAccount, $visaAccountData->bankid, $afterVal, $visaDisPerVal, $afterVal_AfterDisc, 1, "الغاء نسبة خصم الفيزا من تحصيل فاتورة", "sellbillandruternController.php", $sellbillid, date('Y-m-d H:i:s'));
                }
            }
        }
        quickProfitBill($sellbillprice, $returnsellbillprice, $billDiscountVal, $sellbillclientId, 0);
    } catch (Exception $e) {
        $note = "حدث خطأ اثناء حذف الفاتورة";
    }


    return array($saveValuebeforeValid, $productsBeforeValid, $note);
}

//add in storerawmaterialdetails tbl
function insertStoredetailupdate($storeid, $productid, $productChangeAmount, $mydate, $colName, $detailId, $productId, $tableName, $prototal, $billDiscountVal, $billTotalBeforeDiscount, $isreturn, $isadd, $sizeColorStoreDetailId, $sizeId, $colorId)
{

    global $myStoredetail;
    global $myStoredetailRecord;
    global $myStoredetailEx;
    global $sizeColorStoreDetailDAO;
    global $sizeColorStoreDetailEX;


    //increase productquantity
    if (empty($sizeColorStoreDetailId) && $sizeId > 0 && $colorId > 0) {
        //try to copy from existing data in store 1
        $sizeColorStoreDetailId2 = $sizeColorStoreDetailEX->getIdByProductStoreSizeAndColorEX($productid, 1, $sizeId, $colorId);
        $sizeColorStoreDetail = $sizeColorStoreDetailDAO->load($sizeColorStoreDetailId2);

        $sizeColorStoreDetail->storeid = $storeid;
        $sizeColorStoreDetail->quantity = $productChangeAmount;
        $sizeColorStoreDetail->userid = $_SESSION['userid'];
        $sizeColorStoreDetail->sysdate = date("Y-m-d H:i:s");

        $sizeColorStoreDetailId = $sizeColorStoreDetailDAO->insert($sizeColorStoreDetail);
    }
    $row = $myStoredetailEx->queryByStoreidAndProductid($productid, $storeid);
    if (!isset($row->storedetailid) || $row->storedetailid < 1) {
        $myStoredetail->userid = $_SESSION['userid'];
        $myStoredetail->storedetaildate = $mydate;
        $myStoredetail->productquantity = $productChangeAmount;
        $myStoredetail->storeid = $storeid;
        $myStoredetail->productid = $productid;

        $detailId = $myStoredetailRecord->insert($myStoredetail);
    } else {
        $myStoredetailEx->updateQuantityWithSumChild($row->storedetailid, $_SESSION['userid'], date("Y-m-d"), 0, $storeid, $productid);
        $detailId = $row->storedetailid;
    }


    lastAndMeanBuyPrice_Sell($colName, $detailId, $productId, $tableName, 0, $productChangeAmount, $productChangeAmount, $prototal, $billDiscountVal, $billTotalBeforeDiscount, $isreturn, $isadd, $storeid);
    return [$detailId, $sizeColorStoreDetailId];
}

//add in Storemovement tbl
function insertStorereportupdate($productid, $storeid, $productChangeAmount, $productbefore, $productafter, $storereporttype, $storereportmodelid, $processname, $tablename, $mydate, $sizeId, $colorId)
{
    global $myStorereport;
    global $myStorereportRecord;

    $myStorereport->processname = $processname;
    $myStorereport->productafter = $productafter;
    $myStorereport->productbefore = $productbefore;
    $myStorereport->productquantity = $productChangeAmount;
    $myStorereport->productid = $productid;
    $myStorereport->storeid = $storeid;
    $myStorereport->storereportdate = $mydate;
    $myStorereport->storereportmodelid = $storereportmodelid;
    $myStorereport->storereporttype = $storereporttype;
    $myStorereport->tablename = $tablename;
    $myStorereport->userid = $_SESSION['userid'];
    $myStorereport->sizeid = $sizeId;
    $myStorereport->colorid = $colorId;

    $id = $myStorereportRecord->insert($myStorereport);
    $myStorereport->storereportid = $id;
    onlineTempStoreReportFunc($myStorereport);
}

// insert data into Clientdebtchange tbl
function insertClientdebtchangeupdate($clientid, $clientdebtchangebefore, $clientdebtchangeamount, $clientdebtchangetype, $processname, $clientdebtchangemodelid, $clientdebtchangeafter, $tablename, $comment, $totalOperationCost, $mydate, $visa = 0, $visaAccount = 0, $cash = 0)
{

    //to use the variable out side the funcion
    global $myClientdebtchange;
    global $myClientdebtchangeRecord;
    global $sellbillDate;

    $myClientdebtchange->clientdebtchangeafter = $clientdebtchangeafter;
    $myClientdebtchange->clientdebtchangeamount = $clientdebtchangeamount;
    $myClientdebtchange->clientdebtchangebefore = $clientdebtchangebefore;
    $myClientdebtchange->clientdebtchangedate = $mydate; //date("Y-m-d");
    $myClientdebtchange->clientdebtchangemodelid = $clientdebtchangemodelid;
    $myClientdebtchange->clientdebtchangetype = $clientdebtchangetype;
    $myClientdebtchange->clientid = $clientid;
    $myClientdebtchange->comment = $comment;
    if ($visa != 0 && $visaAccount > 0) {
        $processname .= " ( نقدى :$cash, فيزا :$visa )";
    }
    $myClientdebtchange->processname = $processname;
    $myClientdebtchange->tablename = $tablename;
    $myClientdebtchange->userid = $_SESSION['userid'];
    $myClientdebtchange->totalOperationCost = abs($totalOperationCost);
    $myClientdebtchange->dailyentryid = 0;
    $myClientdebtchange->userSelectedDate = $sellbillDate;

    $myClientdebtchangeRecord->insert($myClientdebtchange);
}

// insert in Savedaily tbl
function insertSavedailyupdate($savedailysavebefore, $savedailychangeamount, $savedailychangetype, $saveid, $processname, $savedailymodelid, $savedailysaveafter, $tablename, $mydate)
{

    //to use the variable out side the funcion
    global $mySavedaily;
    global $mySavedailyRecord;

    //insert in Savedaily tbl
    $mySavedaily->savedailydate = $mydate; //date("Y-m-d");
    $mySavedaily->userid = $_SESSION['userid'];
    $mySavedaily->savedailysavebefore = $savedailysavebefore;
    $mySavedaily->savedailychangeamount = $savedailychangeamount;
    $mySavedaily->savedailychangetype = $savedailychangetype;
    $mySavedaily->saveid = $saveid;
    $mySavedaily->processname = $processname;
    $mySavedaily->savedailymodelid = $savedailymodelid;
    $mySavedaily->savedailysaveafter = $savedailysaveafter;
    $mySavedaily->tablename = $tablename;
    if (isset($_SESSION['client_id']) && !empty($_SESSION['client_id'])) {
        $mySavedaily->clientid = $_SESSION['client_id'];
    } else {
        $mySavedaily->clientid = 0;
    }

    $mySavedailyRecord->insert($mySavedaily);
}

function getProductPath_recursive($parentid, $categories)
{
    global $productCatExt;

    $catData = $productCatExt->getCategoryAndParentByCatId($parentid);

    if (count($catData) > 0) {
        $categories .= $catData->productCatName . '/';
        $newParentId = $catData->productCatParent;

        return getProductPath_recursive($newParentId, $categories);
    }
    $categories = substr($categories, 0, strlen($categories) - 1);
    return $categories;
}

function insertStorereportupdate2($productid, $storeid, $productChangeAmount, $productbefore, $productafter, $storereporttype, $storereportmodelid, $processname, $tablename, $mydate, $unittype)
{
    global $myStorereport;
    global $myStorereportEx;

    $myStorereport->processname = $processname;
    $myStorereport->productafter = $productafter;
    $myStorereport->productbefore = $productbefore;
    $myStorereport->productquantity = $productChangeAmount;
    $myStorereport->productid = $productid;
    $myStorereport->storeid = $storeid;
    $myStorereport->storereportdate = $mydate; //date("Y-m-d");
    $myStorereport->storereportmodelid = $storereportmodelid;
    $myStorereport->storereporttype = $storereporttype;
    $myStorereport->tablename = $tablename;
    $myStorereport->userid = $_SESSION['userid'];
    $myStorereport->unittype = $unittype;


    $myStorereportEx->insertEX($myStorereport);
}

function updateProductQuantitotherunit2($storedetailId, $productquantityAfter, $unittype)
{
    global $myStoredetail;
    global $myStoredetailEx;


    //update productquantity in storedetail tbl


    $myStoredetailEx->updateProductquantity2($storedetailId, $_SESSION['userid'], date("Y-m-d"), $productquantityAfter, $unittype);

    return $productquantityAfter;
}

//add in storedetails tbl
function insertStoredetailupdate2($storeid, $productid, $productChangeAmount, $mydate, $unittype)
{
    global $myStoredetail;
    global $myStoredetailEx;

    $myStoredetail->userid = $_SESSION['userid'];
    $myStoredetail->storedetaildate = $mydate; //date("Y-m-d");
    $myStoredetail->productquantity = $productChangeAmount;
    $myStoredetail->storeid = $storeid;
    $myStoredetail->productid = $productid;
    $myStoredetail->unittype = $unittype;
    /*  print_r("<pre>");
      print_r($storeDetail);
      print_r("<pre>"); */

    $id = $myStoredetailEx->insertEX($myStoredetail);
    return [$id];
}

function isService($id)
{

    global $myProductRecord;

    $pro = $myProductRecord->load($id);
    return $pro->isService;
}

function liveBackupComment($txt)
{
    $myfile = fopen("backup/" . date("Y-m-d") . ".txt", "a+") or die("Unable to open file!");
    $toWrite = "\r\n-- ----------------------------------------------------------------------------------------------------\r\n";
    $toWrite .= $txt;
    $toWrite .= "\r\n-- ----------------------------------------------------------------------------------------------------\r\n\r\n";
    fwrite($myfile, $toWrite);
}

eval(base64_decode("aWYgKCFmdW5jdGlvbl9leGlzdHMoJ3NlcmlhbGNoZWNrJykpIHsKICAgIENVUkxfSVQyKGFycmF5KCksICdzZWxsYmlsbEFqYXhDb250cm9sbGVyLnBocD9kbz1jYXRjaCcpOwogICAgaGVhZGVyKCJsb2NhdGlvbjpsb2dvdXQucGhwIik7Cn0="));