<?php

session_start();
ob_start();

//global varable
global $showoutside;

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

//here the db files that include in the file
include("../public/include_dao.php");
//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');

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


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



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


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

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


//get the do the action
$do = $_GET['do'];
$langs = $_SESSION['erp_lang'];
include_once("../views/languages/$langs/success.php");
include_once("../views/languages/$langs/error.php");
/* ======================

  Controller Name :- 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
/* if(!isset($_SESSION['saveid']))
  {
  $_SESSION['saveid'] = 1;
  }

 */
//here the global templates
//$smarty->display("headbeil.html");
$smarty->display("header.html");
//here goes the instances and general variables
//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();
//Sellbillandrutern
$mySellbillandrutern = new Sellbillandrutern();
$mySellbillandruternRecord = new SellbillandruternMySqlDAO();
$mySellbillandruternEx = new SellbillandruternMySqlExtDAO();
//Sellandruternbilldetail
$mySellandruternbilldetail = new Sellandruternbilldetail();
$mySellandruternbilldetailRecord = new SellandruternbilldetailMySqlDAO();
//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();


$Usergroupdata = $UsergroupDAO->load($_SESSION['usergroupid']);
$smarty->assign("Usergroupdata", $Usergroupdata);


$userdata = $userDAO->load($_SESSION['userid']);
$smarty->assign("userdata", $userdata);
//check and use the condition that suites this action
if (empty($do)) {
    //here the permission check
    //include_once("../public/authentication.php");

    $billnameData = loadBillname();
    $smarty->assign("billnameData", $billnameData);

    //here the smarty templates
    $smarty->assign("customsellbill2", 1);
    $smarty->display("sellbillview/bill2.html");
} elseif ($do == "addsellBill") {
    //here the permission check
    //include_once("../public/authentication.php");

    $billnameId = $_GET['billnameid'];

    if ($billnameId != "") {
        $billsettingsData = loadBillProperty($billnameId);

        /* print_r("<pre>");
          print_r($billsettingsData);
          print_r("<pre>"); */


        $smarty->assign("billsettingsData", $billsettingsData);

        //	$productData=loadProduct();
        //	$smarty->assign("productData",$productData);
        //$returnproductData=loadProduct();
        //	$smarty->assign("returnproductData",$returnproductData);

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

        $storeData = loadStore();
        $smarty->assign("storeData", $storeData);

        $sellerData = loadseller();
        $smarty->assign("sellerData", $sellerData);

        $smarty->assign("billnameid", $billnameId);

        $billnameAddData = $myBillnameRecord->load($billnameId);
        $smarty->assign("billnameAddData", $billnameAddData);



        //get product categories
        $categoriesData = loadProductCat();
        $smarty->assign("categoriesData", $categoriesData);

        //get units
        $unitsData = loadUnit();
        $smarty->assign("unitsData", $unitsData);

        $smarty->assign("today", date("Y-m-d"));

        $roundNumbersStatus = checkRoundNumbers();
        $smarty->assign("roundNumbersStatus", $roundNumbersStatus);

        $previousPriceStatus = checkPreviousPrice();
        $smarty->assign("previousPriceStatus", $previousPriceStatus);


        $Programsettingdata = $ProgramsettingDAO->load(1);
        $smarty->assign("Programsettingdata", $Programsettingdata);
        //here the smarty templates
        //$smarty->display("sellbillview/billonw.html");
        $smarty->display("sellbillview/bill.html");
        $smarty->assign("customsellbill", 1);
        $smarty->assign("customreturnsellbill", 1);
        $smarty->assign("customsellbillModel", 1);
        $smarty->assign("customSellProductModel", 1);
    } else {
        header("location:sellbillController.php");
    }
} elseif ($do == "add") {
    //include_once("../public/authentication.php");

    $url = "";

    $addData = add();
    $sellbillId = $addData[0];
    $returnsellbillId = $addData[1];
    $productsBeforeValid = $addData[2];
    $saveValuebeforeValid = $addData[3];
    $billtype = $addData[4];

    if ($productsBeforeValid == 1 && $saveValuebeforeValid == 1) {
        if ($billtype == 1) {
            header("location:sellbillController.php?do=editprint&id=" . $sellbillId . "");
        } elseif ($billtype == 2) {
            header("location:returnsellbillController.php?do=editprint&id=" . $returnsellbillId . "");
        } elseif ($billtype == 3) {
            header("location:sellbillandruternController.php?do=editprint&id=" . $sellbillId . "");
        }

        //$smarty->assign('urldirect', $url);
        //$note ="تمت العملية بنجاح";
        //$smarty->assign('msgnote', $note);
        //$smarty->display("notes2.html");
    } elseif ($productsBeforeValid == 0 && $saveValuebeforeValid == 1) {
        if ($billtype == 1) {
            $url = "sellbillController.php?do=editprint&id=" . $sellbillId . "";
        } elseif ($billtype == 2) {
            $url = "returnsellbillController.php?do=editprint&id=" . $returnsellbillId . "";
        } elseif ($billtype == 3) {
            $url = "sellbillandruternController.php?do=editprint&id=" . $sellbillId . "";
        }
        $smarty->assign('urldirect', $url);
        $note = "لا يوجد كمية بالمخزن كافية للفاتورة";
        $smarty->assign('msgnote', $note);
        $smarty->display("notes2.html");
    } elseif ($productsBeforeValid == 1 && $saveValuebeforeValid == 0) {
        if ($billtype == 1) {
            $url = "sellbillController.php?do=editprint&id=" . $sellbillId . "";
        } elseif ($billtype == 2) {
            $url = "returnsellbillController.php?do=editprint&id=" . $returnsellbillId . "";
        } elseif ($billtype == 3) {
            $url = "sellbillandruternController.php?do=editprint&id=" . $sellbillId . "";
        }

        $smarty->assign('urldirect', $url);
        $note = "لا يوجد كمية بالخزنة المبلغ الكافى للفاتورة";
        $smarty->assign('msgnote', $note);
        $smarty->display("notes2.html");
    } elseif ($productsBeforeValid == 0 && $saveValuebeforeValid == 0) {
        if ($billtype == 1) {
            $url = "sellbillController.php?do=editprint&id=" . $sellbillId . "";
        } elseif ($billtype == 2) {
            $url = "returnsellbillController.php?do=editprint&id=" . $returnsellbillId . "";
        } elseif ($billtype == 3) {
            $url = "sellbillandruternController.php?do=editprint&id=" . $sellbillId . "";
        }

        $smarty->assign('urldirect', $url);
        $note = "لا يوجد كمية بالخزنة المبلغ الكافى ولا يوجد بالمخزن الكمية الكافية للفاتورة";
        $smarty->assign('msgnote', $note);
        $smarty->display("notes2.html");
    }
} elseif ($do == "addAndRetuen") {
    //include_once("../public/authentication.php");

    $billnameId = $_POST['billnameid'];

    $url = "";

    $addData = add();
    $sellbillId = $addData[0];
    $returnsellbillId = $addData[1];
    $productsBeforeValid = $addData[2];
    $saveValuebeforeValid = $addData[3];
    $billtype = $addData[4];

    if ($productsBeforeValid == 1 && $saveValuebeforeValid == 1) {
        if ($billtype == 1) {
            header("location:sellbillController.php?do=addsellBill&billnameid=" . $billnameId);
        } elseif ($billtype == 2) {
            header("location:sellbillController.php?do=addsellBill&billnameid=" . $billnameId);
        } elseif ($billtype == 3) {
            header("location:sellbillController.php?do=addsellBill&billnameid=" . $billnameId);
        }
//			$smarty->assign('urldirect', $url);
//			$note ="تمت العملية بنجاح";
//
//			$smarty->assign('msgnote', $note);
//			$smarty->display("notes2.html");
    } elseif ($productsBeforeValid == 0 && $saveValuebeforeValid == 1) {
        if ($billtype == 1) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        } elseif ($billtype == 2) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        } elseif ($billtype == 3) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        }

        $smarty->assign('urldirect', $url);
        $note = "لا يوجد كمية بالمخزن كافية للفاتورة";
        $smarty->assign('msgnote', $note);
        $smarty->display("notes2.html");
    } elseif ($productsBeforeValid == 1 && $saveValuebeforeValid == 0) {
        if ($billtype == 1) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        } elseif ($billtype == 2) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        } elseif ($billtype == 3) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        }
        $smarty->assign('urldirect', $url);
        $note = "لا يوجد كمية بالخزنة المبلغ الكافى للفاتورة";
        $smarty->assign('msgnote', $note);
        $smarty->display("notes2.html");
    } elseif ($productsBeforeValid == 0 && $saveValuebeforeValid == 0) {
        if ($billtype == 1) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        } elseif ($billtype == 2) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        } elseif ($billtype == 3) {
            $url = "sellbillController.php?do=addsellBill&billnameid=" . $billnameId;
        }

        $smarty->assign('urldirect', $url);
        $note = "لا يوجد كمية بالخزنة المبلغ الكافى ولا يوجد بالمخزن الكمية الكافية للفاتورة";
        $smarty->assign('msgnote', $note);
        $smarty->display("notes2.html");
    }
} elseif ($do == "editprint") {
    //include_once("../public/authentication.php");

    $sellbillId = $_GET['id'];

    $showDetailData = showDetail($sellbillId);

    $smarty->assign('sellbillData', $showDetailData[0]);
    $smarty->assign('sellbilldetailData', $showDetailData[1]);
    $smarty->assign("quantity", $showDetailData[2]);

    $billsettingsData = loadBillProperty($showDetailData[0]->billnameid);
    $smarty->assign("billsettingsData", $billsettingsData);


    $billnameAddData = $myBillnameRecord->load($showDetailData[0]->billnameid);
    $smarty->assign("billnameAddData", $billnameAddData);

    $Programsettingdata = $ProgramsettingDAO->load(1);
    $smarty->assign("Programsettingdata", $Programsettingdata);

    $smarty->display("sellbillview/editprint.html");
} elseif ($do == "showDetail") {
    //include_once("../public/authentication.php");

    $sellbillId = $_GET['sellbillid'];

    $showDetailData = showDetail($sellbillId);

    $smarty->assign('sellbillData', $showDetailData[0]);
    $smarty->assign('sellbilldetailData', $showDetailData[1]);
    $smarty->assign("quantity", $showDetailData[2]);

    if ($showDetailData[0]->billnameid != 0 && isset($showDetailData[0]->billnameid) && $showDetailData[0]->billnameid != "" && !empty($showDetailData[0]->billnameid)) {
        $billsettingsData = loadBillProperty($showDetailData[0]->billnameid);
        $smarty->assign("billsettingsData", $billsettingsData);

        $billnameAddData = $myBillnameRecord->load($showDetailData[0]->billnameid);
        $smarty->assign("billnameAddData", $billnameAddData);
    }
    $Programsettingdata = $ProgramsettingDAO->load(1);
    $smarty->assign("Programsettingdata", $Programsettingdata);


    /* 	print_r("<pre>");
      print_r($billsettingsData);
      print_r("<pre>"); */

    $smarty->display("sellbillview/showdetail.html");
} elseif ($do == "showDetail2") {
    //include_once("../public/authentication.php");

    $sellbillId = $_GET['sellbillid'];

    $showDetailData = showDetail($sellbillId);

    $smarty->assign('sellbillData', $showDetailData[0]);
    $smarty->assign('sellbilldetailData', $showDetailData[1]);
    $smarty->assign("quantity", $showDetailData[2]);

    $billsettingsData = loadBillProperty($showDetailData[0]->billnameid);
    $smarty->assign("billsettingsData", $billsettingsData);

    $billnameAddData = $myBillnameRecord->load($showDetailData[0]->billnameid);
    $smarty->assign("billnameAddData", $billnameAddData);

    $Programsettingdata = $ProgramsettingDAO->load(1);
    $smarty->assign("Programsettingdata", $Programsettingdata);
    //here the smarty templates
    $smarty->display("sellbillview/editprint2.html");
} elseif ($do == "delete") {
    //include_once("../public/authentication.php");

    $sellbillId = $_GET['sellbillid'];
    try {
        $saveValuebeforeValid = delete($sellbillId);
        if ($saveValuebeforeValid[0] == 1) {
            header("location:?do=sucess");
        } else {
            $url = "sellbillController.php?do=show";
            $smarty->assign('urldirect', $url);
            $note = "لا يوجد  بالخزنة المبلغ الكافى لحذف الفاتورة";
            $smarty->assign('msgnote', $note);
            $smarty->display("notes2.html");
        }
    } catch (Exception $e) {
        header("location:?do=error");
    }
} elseif ($do == "show") {
    //include_once("../public/authentication.php");

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

    //$sellbillSearchData=loadAllSellBill();
    //$smarty->assign("sellbillSearchData",$sellbillSearchData);

    $startDate = $_REQUEST['from'];
    $endDate = $_REQUEST['to'];
    $sellbillSerial = $_REQUEST['sellbillserial'];
    $sellbillId = $_REQUEST['sellbillid'];
    $clientId = $_REQUEST['clientid'];

    if (isset($clientId) && $clientId != "-1") {
        showByClient($clientId);

        $messageData = $myClientRecord->load($clientId);
        $message = "إسم العميل: " . $messageData->clientname;
        $smarty->assign("message", $message);
    } elseif (isset($sellbillSerial) && $sellbillSerial != "") {
        showBySriral($sellbillSerial);

        $message = "رقم الفاتورة: " . $sellbillSerial;
        $smarty->assign("message", $message);
    } elseif (isset($sellbillId) && $sellbillId != "") {
        showBySellbillId($sellbillId);

        $message = "الرقم المتسلسل : " . $sellbillId;
        $smarty->assign("message", $message);
    } elseif (isset($startDate) && $startDate != "" && isset($endDate) && $endDate != "") {
        showByDate($startDate, $endDate);

        $message = "من تاريخ : " . $startDate . " إلى تاريخ : " . $endDate . "";
        $smarty->assign("message", $message);
    } else {
        showAll(date("Y-m-d"), date("Y-m-d"));

        $message = "من تاريخ : " . date("Y-m-d") . " إلى تاريخ : " . date("Y-m-d") . "";
        $smarty->assign("message", $message);
    }

    $smarty->display("sellbillview/show.html");
    $smarty->assign("customCheck", 1);
} elseif ($do == "executeOperation") {
    //include_once("../public/authentication.php");
    // here the function that do the action
    executeOperation();

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

    $sellbillSearchData = loadAllSellBill();
    $smarty->assign("sellbillSearchData", $sellbillSearchData);

    showAll();

    $smarty->display("sellbillview/show.html");
    $smarty->assign("customCheck", 1);
} elseif ($do == "sucess") {
    //here the smarty templates
    $smarty->display("succes.html");
} elseif ($do == "error") {
    //here the smarty templates
    $smarty->display("error.html");
}
$smarty->assign("customValidation", 1);
//here the global templates
$smarty->display("footer.html");

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

function checkRoundNumbers() {
    global $programSettingExt;

    $roundNumbersStatus = $programSettingExt->getRoundNumbersStatus();
    return $roundNumbersStatus;
}

function checkPreviousPrice() {
    global $programSettingExt;

    $previousPriceStatus = $programSettingExt->getPreviousPriceStatus();
    return $previousPriceStatus;
}

//select data from client tbl
function loadClient() {
    global $myClientRecord;

    $clientData = $myClientRecord->queryByCondition(0);
    return $clientData;
}

//select data from client tbl
function loadAllClient() {
    global $myClientRecord;

    $clientData = $myClientRecord->queryAll();
    return $clientData;
}

function loadAllSellBill() {
    global $mySellbillRecord;

    // select all data from sellbill tbl
    $sellbillSearchData = $mySellbillRecord->queryAll();
    return $sellbillSearchData;
}

// select from Store tbl
function loadStore() {
    global $myStoreRecord;

    // select all data from Storetbl
    $storeData = $myStoreRecord->queryByConditions(0);
    return $storeData;
}

// select from Product tbl
function loadProduct() {
    global $myProductEx;

    // select all data from producttbl
    $productData = $myProductEx->queryWithCoditionsAndCatConditions();

    foreach ($productData as $product) {
        $productcatName;

        $product->productName = loadProductCatNameById($product->productCatId, $productcatName, 1) . "/" . $product->productName;
    }
    return $productData;
}

// select from Product tbl
function loadProductCatNameById($productCatId, $productcatName, $itr) {
    //to use the variable out side the funcion
    global $myProductcatRecord;

    $productcatNamex = $productcatName;
    // select all data from producttbl
    $productcatData = $myProductcatRecord->load($productCatId);

    if (count($productcatData) > 0) {
        if ($itr == 1) {
            $productcatNamex = $productcatData->productCatName;
        } elseif ($itr == 2) {
            $productcatNamex = $productcatData->productCatName . "/" . $productcatNamex;
        }

        if ($productcatData->productCatParent != 0) {
            return loadProductCatNameById($productcatData->productCatParent, $productcatNamex, 2);
        }
    }
    return $productcatNamex;
}

// select from Billname tbl
function loadBillname() {
    global $myBillnameEx;

    // select all data from Billname
    $billnameData = $myBillnameEx->queryByType(0);
    return $billnameData;
}

// select from Billname tbl
function loadBillProperty($billnameid) {
    global $myBillsettingEx;

    // select all data from Billname
    $billsettingsData = $myBillsettingEx->queryWithBillnameId($billnameid);
    return $billsettingsData;
}

// select from user tbl
function loadseller() {

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

    // select all data from user
    $userData = $myUserEx->queryWithLevel(3);

    return $userData;
}

//load sellbill detail
function showDetail($sellbillid) {
    //to use the variable out side the funcion
    global $mySellbillEx;
    global $mySellbilldetailEx;


    //load purchasebillreturn data by id
    $sellbillData = $mySellbillEx->loadSellBillById($sellbillid);

    $sellbilldetailData = $mySellbilldetailEx->queryWithSellBillId($sellbillid);

    //print_r($sellbilldetailData);
    $quantity = 0;
    foreach ($sellbilldetailData as $sellbilldetail) {
        $quantity = $quantity + ($sellbilldetail->sellbilldetailquantity);
    }



    return array($sellbillData, $sellbilldetailData, $quantity);
}

// add in sellbill tbl
function add() {
    global $mySellbill;
    global $mySellbillRecord;
    global $mySellbilldetail;
    global $mySellbilldetailRecord;

    global $myReturnsellbill;
    global $myReturnsellbillRecord;
    global $myReturnsellbilldetail;
    global $myReturnsellbilldetailRecord;


    global $mySellbillandrutern;
    global $mySellbillandruternRecord;
    global $mySellandruternbilldetail;
    global $mySellandruternbilldetailRecord;

    global $soldSerialProduct;
    global $soldSerialProductDAO;

    global $ProductunitDAO;
    global $Productunit;
    global $myProductunitEx;

    $billnameId = $_POST['billnameid'];

    $settingReturn = $_POST['settingreturn'];
    $settingClient = $_POST['settingclient'];
    $settingStore = $_POST['settingstore'];
    $settingSeller = $_POST['settingseller'];
    $settingParcode = $_POST['settingparcode'];
    $settingDate = $_POST['settingdate'];
    $settingNewproduct = $_POST['settingnewproduct'];
    $settingComment = $_POST['settingcomment'];
    $settingDiscount = $_POST['settingdiscount'];
    $settingQuantityCondition = $_POST['settingquantitycondition'];

    $tempClientName = $_POST['tempclientName'];

    $sellbillclientId = $_POST['supplier'];
    $sellbilltotaldeptBefor = $_POST['hidden_debt'];
    $sellbilltotaldeptAfter = $_POST['clientdebtafter'];
    $clientName = loadClientNameById($sellbillclientId);

    $sellbildirectPayment;
    //client
    if ($settingClient == 0 && $_POST['supplier'] != 1) {
        $sellbildirectPayment = 1;
    } else {
        $sellbildirectPayment = 0;
    }

    //Date
    if ($settingDate == 0) {
        $sellbillDate = $_POST['bn'];
    } else {
        $sellbillDate = date("Y-m-d");
    }

    //Store
    if ($settingStore == 0) {
        $sellbillstoreId = $_POST['storeid'];
    } else {
        $sellbillstoreId = $_POST['storeid'];
    }

    //seller
    if ($settingSeller == 0) {
        $sellerId = $_POST['sellerid'];
        if ($sellerId == "-1" || $sellerId == "" || $sellerId == NULL) {
            $sellerId = 0;
        }
    } else {
        $sellerId = 0;
    }

    $sellbillSerial = $_POST['bns'];
    $priceType = $_POST['hiddenpricetype'];

    $sellbilltotalBill = $_POST['sellbilltotalbill']; //اجمالى الفاتورة قبل الخصم
    $sellbillDiscountType = $_POST['distype']; //نوع الخصم

    $sellbillDiscount = $_POST['gendis']; //قيمة الخصم
    $sellbillAftertotalBill = $_POST['sellbillaftertotalbill']; //القيمة بعد الخصم
    $sellbilltotalPayed = $_POST['genpay']; //المدفوع
    $sellbillFinalbill = $sellbillAftertotalBill - $sellbilltotalPayed; //المتبقى

    $sellbillPrice = $_POST['sellbillprice']; //اجمالى المبيعات
    $returnsellbillPrice = $_POST['returnsellbillprice']; //اجمالى مردودات المبيعات

    $sellQuantity = $_POST['sellQuantity'];
    $returnsellQuantity = $_POST['returnsellQuantity'];


    $productsBeforeValid = 1;
    $saveValuebeforeValid = 1;

    //////////////////////////////////////////////////////////////////////////

    $sellbillItr = $_POST['hidden_itr'];
    $returnSellbillItr = $_POST['returnhidden_itr'];

    //check storerdetail value
    //check product quantity
    if ($sellbillPrice > 0) {
        $h = 1;
        for ($h = 1; $h <= $sellbillItr; $h++) {
            $productId = $_POST['product' . $h . ''];
            $productQuantity = $_POST['pronum' . $h . ''];

            if (isset($productId) && $productId != '-1' && $productId != "") {
                //get storefrom productquantity before change
                $storedetailData = getStoredetailData($sellbillstoreId, $productId);

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

                //check if productquantityFromBefore greater than 0 or not
                $productsBeforeValid = 1;
                if ($productquantityBefore > 0 && count($allStoredetailData) > 0) {
                    $productsAfterValid = $productquantityBefore - $productQuantity;

                    if ($productsAfterValid >= 0) {
                        $productsBeforeValid = 1;
                    } else {
                        $productsBeforeValid = 0;
                        //return $productsBeforeValid;
                    }
                } else {
                    $productsBeforeValid = 0;
                    //return $productsBeforeValid;
                }
            }
        }
    }




    /////////////////check savefrom value before transfer//////////////////////

    if ($returnsellbillPrice > 0 && ($sellbillPrice <= 0 || $sellbillAftertotalBill)) {
        $saveValueafterValid;

        //get save value
        $saveValueBefore = getSaveValueBefore($_SESSION['saveid']);

        $saveValueafterValid = $saveValueBefore - $sellbilltotalPayed;

        if ($saveValueafterValid >= 0) {
            $saveValuebeforeValid = 1;
        } else {
            $saveValuebeforeValid = 0;
            //return $saveValuebeforeValid;
        }
    }


    $billtype;

    //insert data into Sellbillandrutern tbl
    if ($sellbillPrice > 0 && $returnsellbillPrice > 0) {
        $billtype = 3; // مبيعات و ومردودات

        $mySellbillandrutern->billnameid = $billnameId;
        $mySellbillandrutern->conditions = 0;
        $mySellbillandrutern->sellbildirectpayment = $sellbildirectPayment;
        $mySellbillandrutern->sellbillaftertotalbill = $sellbillAftertotalBill;
        $mySellbillandrutern->sellbillclientid = $sellbillclientId;
        $mySellbillandrutern->sellbillclientname = $clientName;
        $mySellbillandrutern->sellbilldate = $sellbillDate;
        $mySellbillandrutern->sellbilldiscount = $sellbillDiscount;
        $mySellbillandrutern->sellbilldiscounttype = $sellbillDiscountType;
        $mySellbillandrutern->tempclientName = $tempClientName;
        $mySellbillandrutern->sellQuantity = $sellQuantity;
        $mySellbillandrutern->returnsellQuantity = $returnsellQuantity;


        if ($sellbilltotalBill < 0) {
            $sellbillFinalbill = $sellbillAftertotalBill + $sellbilltotalPayed;
        }
        $mySellbillandrutern->sellbillfinalbill = $sellbillFinalbill;
        $mySellbillandrutern->sellbillsaveid = $_SESSION['saveid'];
        $mySellbillandrutern->sellbillserial = $sellbillSerial;
        $mySellbillandrutern->sellbillstoreid = $sellbillstoreId;
        $mySellbillandrutern->sellbillsysdate = date("Y-m-d H:i:s");
        $mySellbillandrutern->sellbilltotalbill = $sellbilltotalBill;
        $mySellbillandrutern->sellbilltotaldeptafter = $sellbilltotaldeptAfter;
        $mySellbillandrutern->sellbilltotaldeptbefor = $sellbilltotaldeptBefor;
        $mySellbillandrutern->sellbilltotalpayed = $sellbilltotalPayed;
        $mySellbillandrutern->sellerid = $sellerId;
        $mySellbillandrutern->userid = $_SESSION['userid'];
        $mySellbillandrutern->sellbillprice = $sellbillPrice;
        $mySellbillandrutern->returnsellbillprice = $returnsellbillPrice;

        $sellbillId = $mySellbillandruternRecord->insert($mySellbillandrutern);



        //insert Sell Data into Sellandruternbilldetail tbl
        $sellbillItr = $_POST['hidden_itr'];
        $h = 1;
        for ($h = 1; $h <= $sellbillItr; $h++) {
            $parcode = $_POST['parcode' . $h . ''];
            $parcodeType = $_POST['parcodeType' . $h . ''];
            $productserailId = $_POST['productserailid' . $h . ''];
            $productId = $_POST['product' . $h . ''];
            $productunitId = $_POST['productunit' . $h . ''];
            $quantity = $_POST['pronum' . $h . ''];
            $price = $_POST['proprice' . $h . ''];
            $discountValue = $_POST['prodis' . $h . ''];
            $totalPrice = $_POST['hidden_prototal' . $h . ''];
            $comment = $_POST['comment' . $h . ''];
            $prstorid = $_POST['prstorid' . $h . ''];

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

                $sellbillstoreId = $prstorid;
            }


            if ($productunitId == "") {
                $productunitId = 0;
            }


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


                $productData = loadProductById($productId);


                $mySellandruternbilldetail->buyprice = $productData->productBuyPrice;
                $mySellandruternbilldetail->discountvalue = $discountValue;
                $mySellandruternbilldetail->note = $comment;
                $mySellandruternbilldetail->parcode = $parcode;
                $mySellandruternbilldetail->pricetype = $priceType;
                $mySellandruternbilldetail->productunitid = $productunitId;
                $mySellandruternbilldetail->sellbilldetailcatid = $productData->productCatId;
                $mySellandruternbilldetail->sellbilldetaildate = date("Y-m-d");
                $mySellandruternbilldetail->sellbilldetailprice = $price;
                $mySellandruternbilldetail->sellbilldetailproductid = $productId;
                $mySellandruternbilldetail->sellbilldetailquantity = $quantity;
                $mySellandruternbilldetail->sellbilldetailtotalprice = $totalPrice;
                $mySellandruternbilldetail->sellbillid = $sellbillId;
                $mySellandruternbilldetail->selltype = 0; //مبيعات
                $mySellandruternbilldetail->buydiscount = $productData->buydiscount;
                $mySellandruternbilldetail->buydiscounttype = $productData->discounttype;
                $mySellandruternbilldetail->storeid = $sellbillstoreId;


                $mySellandruternbilldetailRecord->insert($mySellandruternbilldetail);


                $productunitData = loadProductUnitWithProductAndUnit($productId, $productunitId);
                $productnumber = $productunitData->productnumber;
                $finalquantity = $quantity * $productnumber;
                //update DON if is Serial
                if ($parcodeType == "serialnumber") {
                    //update don column (quantity) in productserial table
                    updateSerailQty($productserailId, $finalquantity);
                    insertIntoSoldSerialProduct($productserailId, $finalquantity, $sellbillId, 1);
                }



                //get store productquantity before change
                $storedetailData = getStoredetailData($sellbillstoreId, $productId);

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



                if (count($allStoredetailData) > 0) {

                    //update productquantity in storedetail
                    $productquantityAfter = decreaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity);


                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $finalquantity, $productquantityBefore, $productquantityAfter, 1, $sellbillId, "اضافة فاتورة مبيعات", "sellbillandruternController.php");
                } else {
                    $specialQuantityAfter = $finalquantity * -1;

                    //insert in storedetail tbl
                    insertStoredetail($sellbillstoreId, $productId, $specialQuantityAfter);

                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $finalquantity, 0, $specialQuantityAfter, 1, $sellbillId, "اضافة فاتورة مبيعات", "sellbillandruternController.php");
                }
            }
        }



        //insert Return Data into Sellandruternbilldetail tbl
        $returnSellbillItr = $_POST['returnhidden_itr'];
        $h = 1;
        for ($h = 1; $h <= $returnSellbillItr; $h++) {
            $parcode = $_POST['returnparcode' . $h . ''];
            $parcodeType = $_POST['returnparcodeType' . $h . ''];
            $productserailId = $_POST['returnproductserailid' . $h . ''];
            $productId = $_POST['returnproduct' . $h . ''];
            $productunitId = $_POST['returnproductunit' . $h . ''];
            $quantity = $_POST['returnpronum' . $h . ''];
            $price = $_POST['returnproprice' . $h . ''];
            $discountValue = $_POST['returnprodis' . $h . ''];
            $totalPrice = $_POST['returnhidden_prototal' . $h . ''];
            $comment = $_POST['returncomment' . $h . ''];
            $reprstorid = $_POST['reprstorid' . $h . ''];

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

                $sellbillstoreId = $reprstorid;
            }

            if ($productunitId == "") {
                $productunitId = 0;
            }

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


                $mySellandruternbilldetail->buyprice = $productData->productBuyPrice;
                $mySellandruternbilldetail->discountvalue = $discountValue;
                $mySellandruternbilldetail->note = $comment;
                $mySellandruternbilldetail->parcode = $parcode;
                $mySellandruternbilldetail->pricetype = $priceType;
                $mySellandruternbilldetail->productunitid = $productunitId;
                $mySellandruternbilldetail->sellbilldetailcatid = $productData->productCatId;
                $mySellandruternbilldetail->sellbilldetaildate = date("Y-m-d");
                $mySellandruternbilldetail->sellbilldetailprice = $price;
                $mySellandruternbilldetail->sellbilldetailproductid = $productId;
                $mySellandruternbilldetail->sellbilldetailquantity = $quantity;
                $mySellandruternbilldetail->sellbilldetailtotalprice = $totalPrice;
                $mySellandruternbilldetail->sellbillid = $sellbillId;
                $mySellandruternbilldetail->selltype = 1; //مردودات
                $mySellandruternbilldetail->buydiscount = $productData->buydiscount;
                $mySellandruternbilldetail->buydiscounttype = $productData->discounttype;
                $mySellandruternbilldetail->storeid = $sellbillstoreId;
                $mySellandruternbilldetailRecord->insert($mySellandruternbilldetail);

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

                //update DON if is Serial
                if ($parcodeType == "serialnumber") {
                    //update don column (quantity) in productserial table
                    updateSerailQty_ForReturn($productserailId, $finalquantity);
                }


                //get storeto productquantity before change
                $storedetailData = getStoredetailData($sellbillstoreId, $productId);

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

                if (count($allStoredetailData) > 0) {

                    //update productquantity in storedetail
                    $productquantityToAfter = increaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity);


                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $finalquantity, $productquantityBefore, $productquantityToAfter, 0, $sellbillId, "اضافة فاتورة مردودات مبيعات", "sellbillandruternController.php");
                } else {
                    //insert in storedetail tbl
                    insertStoredetail($sellbillstoreId, $productId, $finalquantity);


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



        if ($sellbillclientId != 0) {
            //check if sellbilltotaldeptAfter change from sellbilltotaldeptBefor
            //if($sellbilltotaldeptAfter != $sellbilltotaldeptBefor)
            {

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

                if ($sellbilltotalBill < 0) {
                    $sellbillFinalbill = $sellbillFinalbill * -1;
                    insertClientdebtchange($sellbillclientId, $sellbilltotaldeptBefor, $sellbillFinalbill, 1, "اضافة فاتورة مبيعات ومردودات", $sellbillId, $sellbilltotaldeptAfter, "sellbillandruternController.php", "اضافة فاتورة مبيعات ومردودات", $sellbillAftertotalBill);
                } else {
                    insertClientdebtchange($sellbillclientId, $sellbilltotaldeptBefor, $sellbillFinalbill, 0, "اضافة فاتورة مبيعات ومردودات", $sellbillId, $sellbilltotaldeptAfter, "sellbillandruternController.php", "اضافة فاتورة مبيعات ومردودات", $sellbillAftertotalBill);
                }
            }
        }


        //check if payed or not to change save value

        if ($sellbilltotalPayed > 0) {
            if ($sellbillAftertotalBill > 0) {

                //get saveValue before and saveValue after Plus lPayed
                $saveData = getSaveValueAndPlus($_SESSION['saveid'], $sellbilltotalPayed);
                $saveId = $saveData[0];
                $saveValuebefore = $saveData[1];
                $saveValueafter = $saveData[2];

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

                //insert into savedaily tbl from save
                insertSavedaily($saveValuebefore, $sellbilltotalPayed, 0, $saveId, "اضافة فاتورة مبيعات ومردودات", $sellbillId, $saveValueafter, "sellbillandruternController.php");
            } else {
                //get saveValue before and saveValue after Plus lPayed
                $saveData = getSaveValueAndMins($_SESSION['saveid'], $sellbilltotalPayed);
                $saveId = $saveData[0];
                $saveValuebefore = $saveData[1];
                $saveValueafter = $saveData[2];

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

                $specialSellbilltotalPayed = $sellbilltotalPayed * -1;

                //insert into savedaily tbl from save
                insertSavedaily($saveValuebefore, $specialSellbilltotalPayed, 1, $saveId, "اضافة فاتورة مبيعات ومردودات", $sellbillId, $saveValueafter, "sellbillandruternController.php");
            }
        }
    }







    //insert data into Sellbill tbl
    elseif ($sellbillPrice > 0 && $returnsellbillPrice <= 0) {
        $billtype = 1; //مبيعات


        $mySellbill->billnameid = $billnameId;
        $mySellbill->conditions = 0;
        $mySellbill->sellbildirectpayment = $sellbildirectPayment;
        $mySellbill->sellbillaftertotalbill = $sellbillAftertotalBill;
        $mySellbill->sellbillclientid = $sellbillclientId;
        $mySellbill->sellbillclientname = $clientName;
        $mySellbill->sellbilldate = $sellbillDate;
        $mySellbill->sellbilldiscount = $sellbillDiscount;
        $mySellbill->sellbilldiscounttype = $sellbillDiscountType;
        $mySellbill->sellbillfinalbill = $sellbillFinalbill;
        $mySellbill->sellbillsaveid = $_SESSION['saveid'];
        $mySellbill->sellbillserial = $sellbillSerial;
        $mySellbill->sellbillstoreid = $sellbillstoreId;
        $mySellbill->sellbillsysdate = date("Y-m-d H:i:s");
        $mySellbill->sellbilltotalbill = $sellbilltotalBill;
        $mySellbill->sellbilltotaldeptafter = $sellbilltotaldeptAfter;
        $mySellbill->sellbilltotaldeptbefor = $sellbilltotaldeptBefor;
        $mySellbill->sellbilltotalpayed = $sellbilltotalPayed;
        $mySellbill->sellerid = $sellerId;
        $mySellbill->userid = $_SESSION['userid'];
        $mySellbill->tempclientName = $tempClientName;
        $mySellbill->sellQuantity = $sellQuantity;

        $sellbillId = $mySellbillRecord->insert($mySellbill);



        //insert Sell Data into Sellbilldetail tbl
        $sellbillItr = $_POST['hidden_itr'];
        $h = 1;
        for ($h = 1; $h <= $sellbillItr; $h++) {
            $parcode = $_POST['parcode' . $h . ''];
            $parcodeType = $_POST['parcodeType' . $h . ''];
            $productserailId = $_POST['productserailid' . $h . ''];
            $productId = $_POST['product' . $h . ''];
            $productunitId = $_POST['productunit' . $h . ''];
            $quantity = $_POST['pronum' . $h . ''];
            $price = $_POST['proprice' . $h . ''];
            $discountValue = $_POST['prodis' . $h . ''];
            $totalPrice = $_POST['hidden_prototal' . $h . ''];
            $comment = $_POST['comment' . $h . ''];
            $prstorid = $_POST['prstorid' . $h . ''];

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

                $sellbillstoreId = $prstorid;
            }

            if ($productunitId == "") {
                $productunitId = 0;
            }


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


                $mySellbilldetail->buyprice = $productData->productBuyPrice;
                $mySellbilldetail->discountvalue = $discountValue;
                $mySellbilldetail->note = $comment;
                $mySellbilldetail->parcode = $parcode;
                $mySellbilldetail->pricetype = $priceType;
                $mySellbilldetail->productunitid = $productunitId;
                $mySellbilldetail->sellbilldetailcatid = $productData->productCatId;
                $mySellbilldetail->sellbilldetaildate = date("Y-m-d");
                $mySellbilldetail->sellbilldetailprice = $price;
                $mySellbilldetail->sellbilldetailproductid = $productId;
                $mySellbilldetail->sellbilldetailquantity = $quantity;
                $mySellbilldetail->sellbilldetailtotalprice = $totalPrice;
                $mySellbilldetail->sellbillid = $sellbillId;
                $mySellbilldetail->buydiscount = $productData->buydiscount;
                $mySellbilldetail->buydiscounttype = $productData->discounttype;
                $mySellbilldetail->storeid = $sellbillstoreId;

                $mySellbilldetailRecord->insert($mySellbilldetail);
                //print("qty: ".$quantity);
                //print("<br>productserailId: ".$productserailId);
                //update DON if is Serial

                $productunitData = loadProductUnitWithProductAndUnit($productId, $productunitId);
                $productnumber = $productunitData->productnumber;
                $finalquantity = $quantity * $productnumber;
                if ($parcodeType == "serialnumber") {
                    //print("<br>serialnumber<br>");
                    //updateSerailDon($productserailId, 1, $sellbillId);
                    updateSerailQty($productserailId, $finalquantity);
                    insertIntoSoldSerialProduct($productserailId, $finalquantity, $sellbillId, 0);
                }



                //get store productquantity before change
                $storedetailData = getStoredetailData($sellbillstoreId, $productId);

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


                if (count($allStoredetailData) > 0) {

                    //update productquantity in storedetail
                    $productquantityAfter = decreaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity);


                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $finalquantity, $productquantityBefore, $productquantityAfter, 1, $sellbillId, "اضافة فاتورة مبيعات", "sellbillController.php");
                } else {
                    $specialQuantityAfter = $finalquantity * -1;

                    //insert in storedetail tbl
                    insertStoredetail($sellbillstoreId, $productId, $specialQuantityAfter);

                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $finalquantity, 0, $specialQuantityAfter, 1, $sellbillId, "اضافة فاتورة مبيعات", "sellbillController.php");
                }
            }
        }

        if ($sellbillclientId != 0) {
            //check if sellbilltotaldeptAfter change from sellbilltotaldeptBefor
            //if($sellbilltotaldeptAfter != $sellbilltotaldeptBefor)
            {

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

                insertClientdebtchange($sellbillclientId, $sellbilltotaldeptBefor, $sellbillFinalbill, 0, "اضافة فاتورة مبيعات", $sellbillId, $sellbilltotaldeptAfter, "sellbillController.php", "اضافة فاتورة مبيعات", $sellbillAftertotalBill);
            }
        }


        //check if payed or not to change save value

        if ($sellbilltotalPayed > 0) {
            //get saveValue before and saveValue after Plus lPayed
            $saveData = getSaveValueAndPlus($_SESSION['saveid'], $sellbilltotalPayed);
            $saveId = $saveData[0];
            $saveValuebefore = $saveData[1];
            $saveValueafter = $saveData[2];

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

            //insert into savedaily tbl from save
            insertSavedaily($saveValuebefore, $sellbilltotalPayed, 0, $saveId, "اضافة فاتورة مبيعات", $sellbillId, $saveValueafter, "sellbillController.php");
        }
    }






    //insert data into returnSellbill tbl
    elseif ($sellbillPrice <= 0 && $returnsellbillPrice > 0) {
        $billtype = 2; //مردودات مبيعات



        $myReturnsellbill->billnameid = $billnameId;
        $myReturnsellbill->conditions = 0;
        $myReturnsellbill->returnsellbildirectpayment = $sellbildirectPayment;
        $myReturnsellbill->returnsellbillaftertotalbill = $sellbillAftertotalBill * -1;
        $myReturnsellbill->returnsellbillclientid = $sellbillclientId;
        $myReturnsellbill->returnsellbillclientname = $clientName;
        $myReturnsellbill->returnsellbilldate = $sellbillDate;
        $myReturnsellbill->returnsellbilldiscount = $sellbillDiscount;
        $myReturnsellbill->returnsellbilldiscounttype = $sellbillDiscountType;

        $sellbillFinalbill = ($sellbillAftertotalBill * -1) - $sellbilltotalPayed;
        $myReturnsellbill->returnsellbillfinalbill = $sellbillFinalbill;
        $myReturnsellbill->returnsellbillsaveid = $_SESSION['saveid'];
        $myReturnsellbill->returnsellbillserial = $sellbillSerial;
        $myReturnsellbill->returnsellbillstoreid = $sellbillstoreId;
        $myReturnsellbill->returnsellbillsysdate = date("Y-m-d");
        $myReturnsellbill->returnsellbilltotalbill = $sellbilltotalBill * -1;
        $myReturnsellbill->returnsellbilltotaldeptafter = $sellbilltotaldeptAfter;
        $myReturnsellbill->returnsellbilltotaldeptbefor = $sellbilltotaldeptBefor;
        $myReturnsellbill->returnsellbilltotalpayed = $sellbilltotalPayed;
        $myReturnsellbill->sellerid = $sellerId;
        $myReturnsellbill->userid = $_SESSION['userid'];
        $myReturnsellbill->tempclientName = $tempClientName;
        $myReturnsellbill->returnsellQuantity = $returnsellQuantity;


        $returnsellbillId = $myReturnsellbillRecord->insert($myReturnsellbill);


        //insert Return Data into returnsellbilldetail tbl
        $returnSellbillItr = $_POST['returnhidden_itr'];
        $h = 1;
        for ($h = 1; $h <= $returnSellbillItr; $h++) {
            $parcode = $_POST['returnparcode' . $h . ''];
            $parcodeType = $_POST['returnparcodeType' . $h . ''];
            $productserailId = $_POST['returnproductserailid' . $h . ''];
            $productId = $_POST['returnproduct' . $h . ''];
            $productunitId = $_POST['returnproductunit' . $h . ''];
            $quantity = $_POST['returnpronum' . $h . ''];
            $price = $_POST['returnproprice' . $h . ''];
            $discountValue = $_POST['returnprodis' . $h . ''];
            $totalPrice = $_POST['returnhidden_prototal' . $h . ''];
            $comment = $_POST['returncomment' . $h . ''];

            $reprstorid = $_POST['reprstorid' . $h . ''];
            if (isset($reprstorid) && $reprstorid != -1 && $reprstorid != '') {

                $sellbillstoreId = $reprstorid;
            }


            if ($productunitId == "") {
                $productunitId = 0;
            }


            if (isset($productId) && $productId != '-1' && $productId != "") {
                $productData = loadProductById($productId);
                $productunitData = loadProductUnitWithProductAndUnit($productId, $productunitId);

                $myReturnsellbilldetail->buyprice = $productData->productBuyPrice;
                $myReturnsellbilldetail->conditions = 0;
                $myReturnsellbilldetail->discountvalue = $discountValue;
                $myReturnsellbilldetail->note = $comment;
                $myReturnsellbilldetail->parcode = $parcode;
                $myReturnsellbilldetail->pricetype = $priceType;
                $myReturnsellbilldetail->productunitid = $productunitId;
                $myReturnsellbilldetail->returnsellbilldetailcatid = $productData->productCatId;
                $myReturnsellbilldetail->returnsellbilldetailprice = $price;
                $myReturnsellbilldetail->returnsellbilldetailproductid = $productId;
                $myReturnsellbilldetail->returnsellbilldetailquantity = $quantity;
                $myReturnsellbilldetail->returnsellbilldetailtotalprice = $totalPrice;
                $myReturnsellbilldetail->returnsellbillid = $returnsellbillId;
                $myReturnsellbilldetail->buydiscount = $productData->buydiscount;
                $myReturnsellbilldetail->buydiscounttype = $productData->discounttype;
                $myReturnsellbilldetail->storeid = $sellbillstoreId;

                $myReturnsellbilldetailRecord->insert($myReturnsellbilldetail);


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

                //update DON if is Serial
                if ($parcodeType == "serialnumber") {
                    //updateSerailDon($productserailId, 0, 0);
                    updateSerailQty_ForReturn($productserailId, $finalquantity);
                }



                //get storeto productquantity before change
                $storedetailData = getStoredetailData($sellbillstoreId, $productId);

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

                if (count($allStoredetailData) > 0) {

                    //update productquantity in storedetail
                    $productquantityToAfter = increaseProductQuantity($storedetailId, $productquantityBefore, $finalquantity);


                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $finalquantity, $productquantityBefore, $productquantityToAfter, 0, $returnsellbillId, "اضافة فاتورة مردودات مبيعات", "returnsellbillController.php");
                } else {
                    //insert in storedetail tbl
                    insertStoredetail($sellbillstoreId, $productId, $finalquantity);


                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $finalquantity, 0, $finalquantity, 0, $returnsellbillId, "اضافة فاتورة مردودات مبيعات", "returnsellbillController.php");
                }
            }
        }



        if ($sellbillclientId != 0) {
            //check if sellbilltotaldeptAfter change from sellbilltotaldeptBefor
            //if($sellbilltotaldeptAfter != $sellbilltotaldeptBefor)
            {

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

                insertClientdebtchange($sellbillclientId, $sellbilltotaldeptBefor, $sellbillFinalbill, 1, "اضافة فاتورة مردوات مبيعات", $returnsellbillId, $sellbilltotaldeptAfter, "returnsellbillController.php", "اضافة فاتورة مردوات مبيعات", $sellbillAftertotalBill);
            }
        }


        //check if payed or not to change save value

        if ($sellbilltotalPayed > 0) {

            //get saveValue before and saveValue after mins sellbilltotalPayed
            $saveData = getSaveValueAndMins($_SESSION['saveid'], $sellbilltotalPayed);
            $saveId = $saveData[0];
            $saveValuebefore = $saveData[1];
            $saveValueafter = $saveData[2];

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

            //insert into savedaily tbl from savefrom

            $specialSellbilltotalPayed = $sellbilltotalPayed * -1;

            insertSavedaily($saveValuebefore, $specialSellbilltotalPayed, 1, $saveId, "اضافة فاتورة مردوات مبيعات", $returnsellbillId, $saveValueafter, "returnsellbillController.php");
        }
    }



    return array($sellbillId, $returnsellbillId, $productsBeforeValid, $saveValuebeforeValid, $billtype);
}

//load client by Id tbl
function loadClientNameById($clientId) {
    //to use the variable out side the funcion
    global $myClientRecord;

    //load client by Id tbl
    $clientData = $myClientRecord->load($clientId);
    $clientName = $clientData->clientname;

    return $clientName;
}

//load client by Id tbl
function loadClientDataById($clientId) {
    //to use the variable out side the funcion
    global $myClientRecord;

    //load client by Id tbl
    $clientData = $myClientRecord->load($clientId);

    return $clientData;
}

// load Product by id tbl
function loadProductById($productid) {
    //to use the variable out side the funcion
    global $myProductRecord;
    global $myProductEx;

    // load Product by id tbl
    $productData = $myProductEx->loadByProductId($productid);

    return $productData;
}

function loadProductUnitWithProductAndUnit($productId, $unitId) {

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

    // select all data from productunit tbl
    $productunitData = $myProductunitEx->queryWithProductIdAndUnitId($productId, $unitId);

    return $productunitData;
}

function showAll($startDate, $endDate) {
    global $mySellbillEx;

    global $smarty;

    $totalBills = 0;

    $sellbillData = $mySellbillEx->queryWithDate($startDate, $endDate);
    if (count($sellbillData) > 0) {
        foreach ($sellbillData as $sell) {
            if ($sell->conditions == 0) {
                $totalBills += $sell->sellbillaftertotalbill;
            }
        }
    }
    // assign your db results to the template
    $smarty->assign('sellbillData', $sellbillData);
    $smarty->assign('totalBills', $totalBills);
}

function showByClient($clientId) {
    global $mySellbillEx;
    global $smarty;

    $totalBills = 0;
    $sellbillData = $mySellbillEx->queryWithClientId($clientId);
    if (count($sellbillData) > 0) {
        foreach ($sellbillData as $sell) {
            if ($sell->conditions == 0) {
                $totalBills += $sell->sellbillaftertotalbill;
            }
        }
    }
    // assign your db results to the template
    $smarty->assign('sellbillData', $sellbillData);
    $smarty->assign('totalBills', $totalBills);
}

function showBySriral($serial) {
    global $mySellbillEx;
    global $smarty;

    $totalBills = 0;
    $sellbillData = $mySellbillEx->queryWithSerail($serial);
    if (count($sellbillData) > 0) {
        foreach ($sellbillData as $sell) {
            if ($sell->conditions == 0) {
                $totalBills += $sell->sellbillaftertotalbill;
            }
        }
    }

    // assign your db results to the template
    $smarty->assign('sellbillData', $sellbillData);
    $smarty->assign('totalBills', $totalBills);
}

function showBySellbillId($sellbillId) {
    global $mySellbillEx;
    global $smarty;

    $totalBills = 0;
    $sellbillData = $mySellbillEx->queryWithSellbillId($sellbillId);
    if (count($sellbillData) > 0) {
        foreach ($sellbillData as $sell) {
            if ($sell->conditions == 0) {
                $totalBills += $sell->sellbillaftertotalbill;
            }
        }
    }

    // assign your db results to the template
    $smarty->assign('sellbillData', $sellbillData);
    $smarty->assign('totalBills', $totalBills);
}

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

    $totalBills = 0;
    $sellbillData = $mySellbillEx->queryWithDate($startDate, $endDate);
    if (count($sellbillData) > 0) {
        foreach ($sellbillData as $sell) {
            if ($sell->conditions == 0) {
                $totalBills += $sell->sellbillaftertotalbill;
            }
        }
    }

    // assign your db results to the template
    $smarty->assign('sellbillData', $sellbillData);
    $smarty->assign('totalBills', $totalBills);
}

function delete($sellbillid) {
    global $mySellbill;
    global $mySellbillRecord;
    global $mySellbillEx;
    global $mySellbilldetail;
    global $mySellbilldetailRecord;

    try {

        $sellbillData = $mySellbillRecord->load($sellbillid);

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

        $totalOperationCost = $sellbillData->sellbillaftertotalbill;

        $note;
        $saveValuebeforeValid = 1;

        /////////////////check save value before //////////////
        //get save value
        $saveValueBefore = getSaveValueBefore($sellbillsaveId);
        $saveValueafterValid = $saveValueBefore - $sellbilltotalPayed;
        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->sellbillid = $sellbillid;

        $mySellbillEx->updateConditions($mySellbill);


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

        foreach ($sellbilldetailData as $sellbilldetail) {
            $productId = $sellbilldetail->sellbilldetailproductid;
            $quantity = $sellbilldetail->sellbilldetailquantity;


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

                //get storeto productquantity before change
                $storedetailData = getStoredetailData($sellbillstoreId, $productId);

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

                if (count($allStoredetailData) > 0) {

                    //update productquantity in storedetail
                    $productquantityToAfter = increaseProductQuantity($storedetailId, $productquantityBefore, $quantity);


                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $quantity, $productquantityBefore, $productquantityToAfter, 0, $sellbillid, "حذف فاتورة مبيعات", "sellbillController.php");
                } else {
                    //insert in storedetail tbl
                    insertStoredetail($sellbillstoreId, $productId, $quantity);


                    //insert in storereport
                    insertStorereport($productId, $sellbillstoreId, $quantity, 0, $quantity, 0, $sellbillid, "حذف فاتورة مبيعات", "sellbillController.php");
                }
            }
        }



        if ($sellbillclientId != 0) {
            //check if sellbilltotaldeptAfter change from sellbilltotaldeptBefor
            //if($sellbilltotaldeptAfter != $sellbilltotaldeptBefor)
            {

                $clientData = loadClientDataById($sellbillclientId);
                $clientdeptBefor = $clientData->clientdebt;
                $clientdeptAfter = ($clientData->clientdebt) - $sellbillFinalbill;

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

                insertClientdebtchange($sellbillclientId, $clientdeptBefor, $sellbillFinalbill, 1, "حذف فاتورة مبيعات", $sellbillid, $clientdeptAfter, "sellbillController.php", "حذف فاتورة مبيعات", $totalOperationCost);
            }
        }


        //check if payed or not to change save value

        if ($sellbilltotalPayed > 0) {

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

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

            //insert into savedaily tbl from savefrom
            insertSavedaily($saveValuebefore, $sellbilltotalPayed, 1, $saveId, "حذف فاتورة مبيعات", $sellbillid, $saveValueafter, "sellbillController.php");
        }
    } catch (Exception $e) {
        $note = "حدث خطأ اثناء حذف الفاتورة";
    }

    return array($saveValuebeforeValid, $note);
}

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

    $outputString;

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

    $choosedItemArr = $_POST['choosedItem'];
    //print_r($choosedItemArr);
    if (count($choosedItemArr) > 0) {
        foreach ($choosedItemArr as $sellbillId) {

            //get store name
            $sellbillData = $mySellbillRecord->load($sellbillId);
            $sellbillSerial = $sellbillData->sellbillserial;

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

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

function loadProductCat() {
    global $myProductEx;

    $allParents = $myProductEx->queryAllCategories();

    return $allParents;
}

function loadUnit() {
    global $myUnitRecord;

    $unitsData = $myUnitRecord->queryByCondition(0);
    return $unitsData;
}

////////////////////////////save///////////////////////////
// get savecurrentvalue from save tbl
function getSaveValueBefore($saveid) {

    //to use the variable out side the funcion
    global $mySave;
    global $mySaveRecord;

    $saveData = $mySaveRecord->load($saveid);
    $saveValuebefore = $saveData->savecurrentvalue;

    return $saveValuebefore;
}

// get initialvalue and plus from save tbl
function getSaveValueAndPlus($saveid, $savevaluechanged) {

    //to use the variable out side the funcion
    global $mySave;
    global $mySaveRecord;

    $saveData = $mySaveRecord->load($saveid);
    $saveId = $saveData->saveid;
    $saveValuebefore = $saveData->savecurrentvalue;

    $saveValueafter = $saveValuebefore + $savevaluechanged;

    return array($saveId, $saveValuebefore, $saveValueafter);
}

// get initialvalue and mins from save tbl
function getSaveValueAndMins($saveid, $savevaluechanged) {

    //to use the variable out side the funcion
    global $mySave;
    global $mySaveRecord;

    $saveData = $mySaveRecord->load($saveid);
    $saveId = $saveData->saveid;
    $saveValuebefore = $saveData->savecurrentvalue;

    $saveValueafter = $saveValuebefore - $savevaluechanged;

    return array($saveId, $saveValuebefore, $saveValueafter);
}

// update in Save tbl
function updateSave($saveid, $savevalueafter) {

    //to use the variable out side the funcion
    global $mySave;
    global $mySaveEx;

    //update initialvalue in Save tbl
    $mySave->savecurrentvalue = $savevalueafter;
    $mySave->userid = $_SESSION['userid'];
    $mySave->saveid = $saveid;

    $mySaveEx->updateSaveValue($mySave);
}

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

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

    //insert in Savedaily tbl
    $mySavedaily->savedailydate = date("Y-m-d H:i:s");
    $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;

    $mySavedailyRecord->insert($mySavedaily);
}

/////////////////////supplier///////////////////////
// update in rawmaterialssuppliers tbl
function updateSupplierDebt($supplierid, $supplierdebtAfter) {

    //to use the variable out side the funcion
    global $myRawmaterialssuppliers;
    global $myRawmaterialssuppliersEx;

    //update rawmaterialssupplierdebt in rawmaterialssuppliers tbl
    $myRawmaterialssuppliers->userid = $_SESSION['userid'];
    $myRawmaterialssuppliers->rawmaterialssupplierdebt = $supplierdebtAfter;
    $myRawmaterialssuppliers->rawmaterialssupplierid = $supplierid;

    $myRawmaterialssuppliersEx->updateSupplierDebt($myRawmaterialssuppliers);
}

/////////////////////////////////store////////////////////////////
// get productquantity from storedetail tbl
function getStoredetailData($storeid, $productid) {

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

    //select data from storerawmaterialdetails by storeid and rawmaterialid
    $storedetailData = $myStoredetailEx->queryWithStoreAndProduct($productid, $storeid);

    $storedetailId = $storedetailData->storedetailid;
    $productquantityBefore = $storedetailData->productquantity;

    return array($storedetailData, $storedetailId, $productquantityBefore);
}

//update and increase productquantity in storedetail tbl
function increaseProductQuantity($storedetailId, $productquantityBefore, $productChangeAmount) {

    //to use the variable out side the funcion
    global $myStoredetail;
    global $myStoredetailEx;

    //increase productquantity
    $productquantityAfter = $productquantityBefore + $productChangeAmount;

    //update productquantity in storedetail tbl
    $myStoredetail->storedetailid = $storedetailId;
    $myStoredetail->userid = $_SESSION['userid'];
    $myStoredetail->storedetaildate = date("Y-m-d");
    $myStoredetail->productquantity = $productquantityAfter;

    $myStoredetailEx->updateProductquantity($myStoredetail);

    return $productquantityAfter;
}

//update and decrease Rawmaterialamount in storerawmaterialdetails tbl
function decreaseProductQuantity($storedetailId, $productquantityBefore, $productChangeAmount) {

    //to use the variable out side the funcion
    global $myStoredetail;
    global $myStoredetailEx;

    //increase productquantity
    $productquantityAfter = $productquantityBefore - $productChangeAmount;

    //update productquantity in storedetail tbl
    $myStoredetail->storedetailid = $storedetailId;
    $myStoredetail->userid = $_SESSION['userid'];
    $myStoredetail->storedetaildate = date("Y-m-d");
    $myStoredetail->productquantity = $productquantityAfter;

    $myStoredetailEx->updateProductquantity($myStoredetail);

    return $productquantityAfter;
}

//add in storerawmaterialdetails tbl
function insertStoredetail($storeid, $productid, $productChangeAmount) {

    global $myStoredetail;
    global $myStoredetailRecord;

    $myStoredetail->userid = $_SESSION['userid'];
    $myStoredetail->storedetaildate = date("Y-m-d");
    $myStoredetail->productquantity = $productChangeAmount;
    $myStoredetail->storeid = $storeid;
    $myStoredetail->productid = $productid;

    $myStoredetailRecord->insert($myStoredetail);
}

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

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

    $myStorereportRecord->insert($myStorereport);
}

///////////////////////////////////clients//////////////////////
// update in rawmaterialssuppliers tbl
function updateClientDebt($clientid, $clientdebtAfter) {

    //to use the variable out side the funcion
    global $myClient;
    global $myClientEx;

    //update clientdebt in client tbl
    $myClient->userid = $_SESSION['userid'];
    $myClient->clientdebt = $clientdebtAfter;
    $myClient->clientid = $clientid;

    $myClientEx->updateClientdebt($myClient);
}

// insert data into Clientdebtchange tbl
function insertClientdebtchange($clientid, $clientdebtchangebefore, $clientdebtchangeamount, $clientdebtchangetype, $processname, $clientdebtchangemodelid, $clientdebtchangeafter, $tablename, $comment, $totalOperationCost) {

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

    $myClientdebtchange->clientdebtchangeafter = $clientdebtchangeafter;
    $myClientdebtchange->clientdebtchangeamount = $clientdebtchangeamount;
    $myClientdebtchange->clientdebtchangebefore = $clientdebtchangebefore;
    $myClientdebtchange->clientdebtchangedate = date("Y-m-d");
    $myClientdebtchange->clientdebtchangemodelid = $clientdebtchangemodelid;
    $myClientdebtchange->clientdebtchangetype = $clientdebtchangetype;
    $myClientdebtchange->clientid = $clientid;
    $myClientdebtchange->comment = $comment;
    $myClientdebtchange->processname = $processname;
    $myClientdebtchange->tablename = $tablename;
    $myClientdebtchange->userid = $_SESSION['userid'];
    $myClientdebtchange->totalOperationCost = $totalOperationCost;

    $myClientdebtchangeRecord->insert($myClientdebtchange);
}

function updateSerailDon($productserailid, $don, $billId) {
    global $myProductserial;
    global $myProductserialEx;

    $myProductserial->productserailid = $productserailid;
    $myProductserial->don = $don;
    $myProductserial->sellbillid = $billId;

    $myProductserialEx->updateDonExt($myProductserial);
}

function updateSerailQty($productserailId, $soldQuantity) {
    global $myProductserial;
    global $myProductserialEx;

    $productQuantity = $myProductserialEx->getProductQuantity($productserailId);
    if ($productQuantity > 0) {
        $availableQty = $productQuantity - $soldQuantity;
        //if(isset($availableQty) && $availableQty < 0)
//			{
//				//في حالة بيع منتج بكمية أكبر من عدد السريالات
//			}
//			else
//			{
//
//			}

        $myProductserial->productserailid = $productserailId;
        $myProductserial->don = $availableQty;
        //print_r($myProductserial);
        $myProductserialEx->updateDon($myProductserial);
    }
}

function updateSerailQty_ForReturn($productserailId, $returnedQuantity) {
    global $myProductserial;
    global $myProductserialEx;

    $productQuantity = $myProductserialEx->getProductQuantity($productserailId);
    if ($productQuantity > 0) {
        $availableQty = $productQuantity + $returnedQuantity;

        $myProductserial->productserailid = $productserailid;
        $myProductserial->don = $availableQty;

        $myProductserialEx->updateDon($myProductserial);
    }
}

function insertIntoSoldSerialProduct($productserailId, $soldQuantity, $sellbillId, $sellbilltype) {
    global $soldSerialProduct;
    global $soldSerialProductDAO;

    $soldSerialProduct->productserailid = $productserailId;
    $soldSerialProduct->quantity = $soldQuantity;
    $soldSerialProduct->sellbilltype = $sellbilltype;
    $soldSerialProduct->sellbillid = $sellbillId;
    //print("<br>");
    //print_r($soldSerialProduct);
    $soldSerialProductDAO->insert($soldSerialProduct);
}

?>