public int UpdateGLBalanceLCYandCCY(IUnitOfWork _IUoW, GLMaster _GLMaster)
        {
            int            result           = 0;
            int            TracerNo         = 0;
            int            BatchNo          = 0;
            List <TransGL> List_Obj_TransGL = new List <TransGL>();

            try
            {
                var MaxObj_TransGL = _IUoW.Repository <TransGL>().GetAll().OrderByDescending(x => int.Parse(x.BatchNo)).ThenByDescending(x => int.Parse(x.TracerNo)).FirstOrDefault();
                if (MaxObj_TransGL == null)
                {
                    BatchNo = BatchNo + 1;
                }
                else
                {
                    BatchNo  = Convert.ToInt32(MaxObj_TransGL.BatchNo) + 1;
                    TracerNo = Convert.ToInt32(MaxObj_TransGL.TracerNo);
                }

                var List_TransactionTemplate = _IUoW.Repository <TransactionTemplate>().Get(x => (x.DefineServiceId == _GLMaster.DefineServiceId) &&
                                                                                            x.AuthStatusId == "A" && x.LastAction != "DEL");
                if (List_TransactionTemplate != null)
                {
                    foreach (var item in List_TransactionTemplate)
                    {
                        TransGL Obj_TransGL  = new TransGL();
                        var     _oldGLMaster = _IUoW.Repository <GLMaster>().GetBy(x => x.GLAccSl == item.GLAccSl);
                        if (_oldGLMaster != null)
                        {
                            //var _oldGLMasterForLog = ObjectCopier.DeepCopy(_oldGLMaster);

                            decimal?CurrentBalanceLCY = _oldGLMaster.CurrentBalanceLCY;
                            decimal?CurrentBalanceCCY = _oldGLMaster.CurrentBalanceCCY;
                            decimal?Amount            = _GLMaster.Amount;
                            if (item.DebitOrCredit == "D")//debit
                            {
                                _oldGLMaster.CurrentBalanceLCY = (CurrentBalanceLCY - Amount);
                                _oldGLMaster.CurrentBalanceCCY = (CurrentBalanceCCY - Amount);
                            }
                            if (item.DebitOrCredit == "C")//credit
                            {
                                _oldGLMaster.CurrentBalanceLCY = (CurrentBalanceLCY + Amount);
                                _oldGLMaster.CurrentBalanceCCY = (CurrentBalanceCCY + Amount);
                            }
                            _oldGLMaster.AuthStatusId = "A";
                            _oldGLMaster.LastAction   = "EDT";
                            _oldGLMaster.LastUpdateDT = System.DateTime.Now;
                            _oldGLMaster.MakeBy       = "prova";
                            result = _IUoW.Repository <GLMaster>().Update(_oldGLMaster);
                            if (result == 1)
                            {
                                if (MaxObj_TransGL == null)
                                {
                                    TracerNo = TracerNo + 1;
                                }
                                else
                                {
                                    TracerNo = TracerNo + 1;
                                }
                                Obj_TransGL.BranchId      = _oldGLMaster.BranchId;
                                Obj_TransGL.TracerNo      = TracerNo.ToString();
                                Obj_TransGL.BatchNo       = BatchNo.ToString();
                                Obj_TransGL.DebitOrCredit = item.DebitOrCredit;
                                Obj_TransGL.GLAccSl       = _oldGLMaster.GLAccSl;
                                Obj_TransGL.GLAccNo       = _oldGLMaster.GLAccNo;
                                Obj_TransGL.AmountLCY     = _GLMaster.Amount;
                                Obj_TransGL.AmountCCY     = _GLMaster.Amount;
                                Obj_TransGL.BalanceLCY    = Convert.ToInt32(_oldGLMaster.CurrentBalanceLCY);
                                Obj_TransGL.BalanceCCY    = Convert.ToInt32(_oldGLMaster.CurrentBalanceCCY);
                                Obj_TransGL.Narration     = _GLMaster.Narration;
                                Obj_TransGL.AuthStatusId  = "A";
                                Obj_TransGL.LastAction    = "ADD";
                                Obj_TransGL.MakeBy        = "prova";
                                Obj_TransGL.MakeDT        = System.DateTime.Now;
                                List_Obj_TransGL.Add(Obj_TransGL);
                            }
                        }
                        if (result == 0)
                        {
                            return(result);
                        }
                    }
                    result = _IUoW.Repository <TransGL>().AddRange(List_Obj_TransGL);
                }
                return(result);
            }
            catch (Exception ex)
            {
                _ObjErrorLogService = new ErrorLogService();
                _ObjErrorLogService.AddErrorLog(ex, string.Empty, "UpdateGLBalanceLCYandCCY(string)", string.Empty);
                return(result);
            }
        }
        public int AddGLChart(GLChart _GLChart)
        {
            try
            {
                int result = 0;
                _GLChart.GLAccSl      = _IUoW.mTakaDbQuery().MaxGLAccSL(_GLChart.GLPrefix).ToString();
                _GLChart.GLAccNo      = _GLChart.GLPrefix + _GLChart.GLAccNo;
                _GLChart.OpeningDate  = Convert.ToDateTime(_GLChart.OpeningDate.ToShortDateString()).Date.AddDays(1);
                _GLChart.GLType       = _GLChart.GLType.Substring(0, 1);
                _GLChart.AuthStatusId = "U";
                _GLChart.LastAction   = "ADD";
                _GLChart.MakeDT       = System.DateTime.Now;
                _GLChart.MakeBy       = "mtaka";
                result = _IUoW.Repository <GLChart>().Add(_GLChart);

                if (result != 1)
                {
                    return(result);
                }

                var               _GLMaster     = AutoMapperCFG.SetObjectMapping <GLChart, GLMaster>(_GLChart);
                List <GLMaster>   _ListGLMaster = new List <GLMaster>();
                List <BranchInfo> _ListBranch   = _IUoW.Repository <BranchInfo>().Get(x => x.AuthStatusId == "A" && x.LastAction != "DEL").OrderBy(x => x.BranchId).ToList();
                var               _maxSl        = _IUoW.Repository <GLMaster>().GetMaxValue(x => x.Sl) + 1;

                for (int i = 0; i < _ListBranch.Count(); i++)
                {
                    _GLMaster.Sl       = (_maxSl++).ToString();
                    _GLMaster.BranchId = _ListBranch[i].BranchId;
                    GLMaster _GLMasterTemp = ObjectCopier.DeepCopy(_GLMaster);

                    _ListGLMaster.Add(_GLMasterTemp);
                }
                result = _IUoW.Repository <GLMaster>().AddRange(_ListGLMaster);



                #region Auth Log
                if (result == 1)
                {
                    _IAuthLogService = new AuthLogService();
                    long _outMaxSlAuthLogDtl = 0;
                    result = _IAuthLogService.AddAuthLog(_IUoW, null, _GLChart, "ADD", "0001", "090102017", 1, "GLChart", "MTK_GL_CHART", "GLAccSl", _GLChart.GLAccSl, "mtaka", _outMaxSlAuthLogDtl, out _outMaxSlAuthLogDtl);
                    if (result == 1)
                    {
                        result = _IAuthLogService.AddAuthLog(_IUoW, null, _ListGLMaster, "ADD", "0001", "090102017", 0, "GLMaster", "MTK_GL_MASTER", "Sl", null, "mtaka", _outMaxSlAuthLogDtl, out _outMaxSlAuthLogDtl);
                    }
                }
                #endregion

                if (result == 1)
                {
                    _IUoW.Commit();
                }
                return(result);
            }
            catch (Exception ex)
            {
                _ObjErrorLogService = new ErrorLogService();
                _ObjErrorLogService.AddErrorLog(ex, string.Empty, "AddGLChart(obj)", string.Empty);
                return(0);
            }
        }