コード例 #1
0
        public string DeleteSUIncrementDecrement(SUIncrementDecrementEntity sUIncrementDecrement)
        {
            const string sql = @"uspDelete_SUIncrementDecrement";

            object[] parms = { "@RefID", sUIncrementDecrement.RefId };
            return(Db.Delete(sql, true, parms));
        }
        /// <summary>
        /// Inserts the account balance.
        /// </summary>
        /// <param name="suIncrementDecrement">The su increment decrement.</param>
        /// <param name="suIncrementDecrementDetail">The su increment decrement detail.</param>
        public void InsertAccountBalance(SUIncrementDecrementEntity suIncrementDecrement, SUIncrementDecrementDetailEntity suIncrementDecrementDetail)
        {
            //insert AccountBalance for debit account
            var accountBalanceForDebit     = AddAccountBalanceForDebit(suIncrementDecrement, suIncrementDecrementDetail);
            var accountBalanceForDebitExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForDebit);

            if (accountBalanceForDebitExit != null)
            {
                UpdateAccountBalance(accountBalanceForDebitExit, accountBalanceForDebit.MovementDebitAmountOC,
                                     accountBalanceForDebit.MovementDebitAmount, true, 1);
            }
            else
            {
                AccountBalanceDao.InsertAccountBalance(accountBalanceForDebit);
            }

            //insert AccountBalance for credit account
            var accountBalanceForCredit     = AddAccountBalanceForCredit(suIncrementDecrement, suIncrementDecrementDetail);
            var accountBalanceForCreditExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForCredit);

            if (accountBalanceForCreditExit != null)
            {
                UpdateAccountBalance(accountBalanceForCreditExit, accountBalanceForCredit.MovementCreditAmountOC,
                                     accountBalanceForCredit.MovementCreditAmount, true, 2);
            }
            else
            {
                AccountBalanceDao.InsertAccountBalance(accountBalanceForCredit);
            }
        }
コード例 #3
0
        private SupplyLedgerEntity MakeSupplyLedger(SUIncrementDecrementEntity suIncrementDecrement, SUIncrementDecrementDetailEntity suIncrementDecrementDetail)
        {
            var result = new SupplyLedgerEntity();

            result.SupplyLedgerId    = 0;
            result.RefId             = suIncrementDecrement.RefId;
            result.RefDetailId       = suIncrementDecrementDetail.RefDetailId;
            result.RefType           = suIncrementDecrement.RefType;
            result.RefNo             = suIncrementDecrement.RefNo;
            result.RefDate           = suIncrementDecrement.RefDate;
            result.PostedDate        = suIncrementDecrement.PostedDate;
            result.Description       = suIncrementDecrementDetail.Description;
            result.JournalMemo       = suIncrementDecrement.JournalMemo;
            result.InventoryItemId   = suIncrementDecrementDetail.InventoryItemId;
            result.DepartmentId      = suIncrementDecrementDetail.DepartmentId;
            result.CurrencyCode      = suIncrementDecrement.CurrencyCode;
            result.ExchangeRate      = suIncrementDecrement.ExchangeRate;
            result.Unit              = InventoryItemDao.GetInventoryItem(suIncrementDecrementDetail.InventoryItemId)?.Unit ?? null;
            result.Quantity          = suIncrementDecrementDetail.Quantity;
            result.UnitPriceOc       = suIncrementDecrementDetail.UnitPriceOc;
            result.UnitPriceExchange = suIncrementDecrementDetail.UnitPriceExchange;
            result.AmountOc          = suIncrementDecrementDetail.AmountOc;
            result.AmountExchange    = suIncrementDecrementDetail.AmountExchange;
            return(result);
        }
        /// <summary>
        /// Updates the account balance.
        /// </summary>
        /// <param name="suIncrementDecrement">The su increment decrement.</param>
        /// <returns></returns>
        public string UpdateAccountBalance(SUIncrementDecrementEntity suIncrementDecrement)
        {
            var suIncrementDecrementDetails = SUIncrementDecrementDetailDao.GetSUIncrementDecrementDetailsByRefId(suIncrementDecrement.RefId);

            foreach (var suIncrementDecrementDetail in suIncrementDecrementDetails)
            {
                string message;
                var    accountBalanceForDebit     = AddAccountBalanceForDebit(suIncrementDecrement, suIncrementDecrementDetail);
                var    accountBalanceForDebitExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForDebit);
                if (accountBalanceForDebitExit != null)
                {
                    message = UpdateAccountBalance(accountBalanceForDebitExit, accountBalanceForDebit.MovementDebitAmountOC,
                                                   accountBalanceForDebit.MovementDebitAmount, false, 1);
                    if (message != null)
                    {
                        return(message);
                    }
                }

                var accountBalanceForCredit     = AddAccountBalanceForCredit(suIncrementDecrement, suIncrementDecrementDetail);
                var accountBalanceForCreditExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceForCredit);
                if (accountBalanceForCreditExit != null)
                {
                    message = UpdateAccountBalance(accountBalanceForCreditExit, accountBalanceForCredit.MovementCreditAmountOC,
                                                   accountBalanceForCredit.MovementCreditAmount, false, 2);
                    if (message != null)
                    {
                        return(message);
                    }
                }
            }
            return(null);
        }
コード例 #5
0
        public SUIncrementDecrementEntity GetSUIncrementDecrementByRefdateAndReftype(SUIncrementDecrementEntity sUIncrementDecrement)
        {
            const string procedures = @"uspGet_SUIncrementDecrement_ByRefdateAndReftype";

            object[] parms =
            {
                "@RefType", sUIncrementDecrement.RefType, "@RefDate", sUIncrementDecrement.RefDate, "@RefNo",
                sUIncrementDecrement.RefNo
            };
            return(Db.Read(procedures, true, Make, parms));
        }
 /// <summary>
 ///     Takes the specified s u increment decrement entity.
 /// </summary>
 /// <param name="sUIncrementDecrementEntity">The s u increment decrement entity.</param>
 /// <returns></returns>
 private static object[] Take(SUIncrementDecrementEntity sUIncrementDecrementEntity)
 {
     return(new object[]
     {
         "@RefID", sUIncrementDecrementEntity.RefId,
         "@RefType", sUIncrementDecrementEntity.RefType,
         "@RefDate", sUIncrementDecrementEntity.RefDate,
         "@PostedDate", sUIncrementDecrementEntity.PostedDate,
         "@RefNo", sUIncrementDecrementEntity.RefNo,
         "@ParalellRefNo", sUIncrementDecrementEntity.ParalellRefNo,
         "@JournalMemo", sUIncrementDecrementEntity.JournalMemo,
         "@TotalAmount", sUIncrementDecrementEntity.TotalAmount,
         "@EditVersion", sUIncrementDecrementEntity.EditVersion
     });
 }
コード例 #7
0
 private object[] Take(SUIncrementDecrementEntity sUIncrementDecrementDetail)
 {
     return(new object[]
     {
         "@RefID", sUIncrementDecrementDetail.RefId,
         "@RefType", sUIncrementDecrementDetail.RefType,
         "@RefDate", sUIncrementDecrementDetail.RefDate,
         "@PostedDate", sUIncrementDecrementDetail.PostedDate,
         "@RefNo", sUIncrementDecrementDetail.RefNo,
         "@JournalMemo", sUIncrementDecrementDetail.JournalMemo,
         "@CurrencyCode", sUIncrementDecrementDetail.CurrencyCode,
         "@ExchangeRate", sUIncrementDecrementDetail.ExchangeRate,
         "@TotalAmountOc", sUIncrementDecrementDetail.TotalAmountOc,
         "@TotalAmountExchange", sUIncrementDecrementDetail.TotalAmountExchange
     });
 }
        //private List<BankInfo> banks;
        public List <SUIncrementDecrementEntity> GetSUIncrementDecrements(string connectionString)
        {
            List <SUIncrementDecrementEntity> buentity = new List <SUIncrementDecrementEntity>();

            using (var context = new MISAEntity(connectionString))
            {
                var querry = context.SUIncrementDecrementDetails.ToList();
                //var projects = context.Projects.ToList();
                //var currencys = context.CCies.ToList();
                var budgetsource = context.BudgetSources.ToList();
                var listitems    = context.ListItems.ToList();
                //var funds = context.Funds.ToList();
                //var fundstructures = context.FundStructures.ToList();
                var budgetproviders  = context.BudgetProvidences.ToList();
                var accountingobject = context.AccountingObjects.ToList();
                //var projectexpenses = context.ProjectExpenses.ToList();
                //var activity = context.Activities.ToList();
                //var tasks = context.Tasks.ToList();
                //var stocks = context.Stocks.ToList();
                var topics = context.Topics.ToList();
                //var fixedassets = context.FixedAssets.ToList();
                var departments = context.Departments.ToList();
                //var purchasepurposes = context.PurchasePurposes.ToList();
                var inventoryitems = context.InventoryItems.ToList();
                // banks = context.BankInfoes.ToList();
                var resultcontext = context.SUIncrementDecrements.ToList();
                foreach (var result in resultcontext)
                {
                    var newresult = new SUIncrementDecrementEntity();
                    newresult.RefId         = result.RefID.ToString();
                    newresult.RefType       = ConvRefType.ConvRefType(result.RefType);
                    newresult.RefDate       = result.RefDate;
                    newresult.PostedDate    = result.PostedDate;
                    newresult.RefNo         = result.RefNo;
                    newresult.ParalellRefNo = result.ParalellRefNo;
                    newresult.JournalMemo   = result.JournalMemo;
                    newresult.TotalAmount   = result.TotalAmount;
                    newresult.EditVersion   = result.EditVersion;
                    newresult.SUIncrementDecrementDetails = result.SUIncrementDecrementDetails.Count <= 0 ? null : SUIncrementDecrementDetails(result.SUIncrementDecrementDetails.ToList(), result.RefID.ToString());
                    buentity.Add(newresult);
                }
            }
            return(buentity);
        }
 /// <summary>
 /// Adds the account balance for debit.
 /// </summary>
 /// <param name="suIncrementDecrement">The su increment decrement.</param>
 /// <param name="suIncrementDecrementDetail">The su increment decrement detail.</param>
 /// <returns></returns>
 public AccountBalanceEntity AddAccountBalanceForDebit(SUIncrementDecrementEntity suIncrementDecrement, SUIncrementDecrementDetailEntity suIncrementDecrementDetail)
 {
     return(new AccountBalanceEntity
     {
         AccountBalanceId = Guid.NewGuid().ToString(),
         AccountNumber = suIncrementDecrementDetail.DebitAccount,
         CurrencyCode = "VND",
         ExchangeRate = 1,
         BalanceDate = suIncrementDecrement.PostedDate,
         MovementDebitAmountOC = suIncrementDecrementDetail.Amount,
         MovementDebitAmount = suIncrementDecrementDetail.Amount,
         MovementCreditAmountOC = 0,
         MovementCreditAmount = 0,
         BudgetSourceId = suIncrementDecrementDetail.BudgetSourceId,
         BudgetChapterCode = suIncrementDecrementDetail.BudgetChapterCode,
         BudgetKindItemCode = suIncrementDecrementDetail.BudgetKindItemCode,
         BudgetSubKindItemCode = suIncrementDecrementDetail.BudgetSubKindItemCode
     });
 }
コード例 #10
0
        public string UpdateSUIncrementDecrement(SUIncrementDecrementEntity sUIncrementDecrement)
        {
            const string sql = @"uspUpdate_SUIncrementDecrement";

            return(Db.Update(sql, true, Take(sUIncrementDecrement)));
        }
コード例 #11
0
        public long InsertSUIncrementDecrement(SUIncrementDecrementEntity sUIncrementDecrement)
        {
            const string sql = @"uspInsert_SUIncrementDecrement";

            return(Db.Insert(sql, true, Take(sUIncrementDecrement)));
        }
コード例 #12
0
 internal static SUIncrementDecrementModel FromDataTransferObject(SUIncrementDecrementEntity entity)
 {
     return(entity == null ? null : AutoMapper.Mapper.Map <SUIncrementDecrementEntity, SUIncrementDecrementModel>(entity));
 }
コード例 #13
0
        public SUIncrementDecrementResponse InsertSUIncrementDecrement(SUIncrementDecrementEntity sUIncrementDecrementEntity, bool isconvertDB)
        {
            var response = new SUIncrementDecrementResponse {
                Acknowledge = AcknowledgeType.Success
            };

            try
            {
                if (!sUIncrementDecrementEntity.Validate())
                {
                    foreach (var error in sUIncrementDecrementEntity.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
                using (var scope = new TransactionScope())
                {
                    var sUIncrementDecrementByRefNo = SUIncrementDecrementDao.GetSUIncrementDecrementByRefNo(sUIncrementDecrementEntity.RefNo, sUIncrementDecrementEntity.PostedDate);
                    if (sUIncrementDecrementByRefNo != null && sUIncrementDecrementByRefNo.PostedDate.Year == sUIncrementDecrementEntity.PostedDate.Year)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        response.Message     = "Mã chứng từ đã tồn tại!";
                        return(response);
                    }
                    sUIncrementDecrementEntity.RefId = SUIncrementDecrementDao.InsertSUIncrementDecrement(sUIncrementDecrementEntity);
                    if (sUIncrementDecrementEntity.RefId <= 0)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        return(response);
                    }

                    #region Insert Detail & SupplyLedger

                    if (sUIncrementDecrementEntity.SUIncrementDecrementDetails != null)
                    {
                        foreach (var sUIncrementDecrementDetailEntity in sUIncrementDecrementEntity.SUIncrementDecrementDetails)
                        {
                            sUIncrementDecrementDetailEntity.RefId       = sUIncrementDecrementEntity.RefId;
                            sUIncrementDecrementDetailEntity.RefDetailId = SUIncrementDecrementDetailDao.InsertSUIncrementDecrementDetail(sUIncrementDecrementDetailEntity);
                            if (sUIncrementDecrementDetailEntity.RefDetailId <= 0)
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }

                            var supplyLedgerEntity = MakeSupplyLedger(sUIncrementDecrementEntity, sUIncrementDecrementDetailEntity);
                            supplyLedgerEntity.SupplyLedgerId = SupplyLedgerDao.InsertSupplyLedger(supplyLedgerEntity);
                            if (supplyLedgerEntity.SupplyLedgerId <= 0)
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }
                        }
                    }

                    #endregion

                    #region Auto Number

                    var autoNumber = AutoNumberDao.GetAutoNumberByRefType(sUIncrementDecrementEntity.RefType);
                    if (sUIncrementDecrementEntity.CurrencyCode == "USD")
                    {
                        autoNumber.Value += 1;
                    }
                    else
                    {
                        autoNumber.ValueLocalCurency += 1;
                    }

                    response.Message = AutoNumberDao.UpdateAutoNumber(autoNumber);
                    if (response.Message != null)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(response);
                    }

                    #endregion

                    scope.Complete();
                }
                response.RefId = sUIncrementDecrementEntity.RefId;
                return(response);
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                return(response);
            }
        }
コード例 #14
0
        public SUIncrementDecrementResponse UpdateSUIncrementDecrement(SUIncrementDecrementEntity sUIncrementDecrementEntity)
        {
            var response = new SUIncrementDecrementResponse {
                Acknowledge = AcknowledgeType.Success
            };

            try
            {
                if (!sUIncrementDecrementEntity.Validate())
                {
                    foreach (var error in sUIncrementDecrementEntity.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
                using (var scope = new TransactionScope())
                {
                    var sUIncrementDecrementByRefNo = SUIncrementDecrementDao.GetSUIncrementDecrementByRefNo(sUIncrementDecrementEntity.RefNo, sUIncrementDecrementEntity.PostedDate);
                    if (sUIncrementDecrementByRefNo != null && sUIncrementDecrementByRefNo.RefId != sUIncrementDecrementEntity.RefId)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        response.Message     = "Mã chứng từ đã tồn tại!";
                        return(response);
                    }
                    response.Message = SUIncrementDecrementDao.UpdateSUIncrementDecrement(sUIncrementDecrementEntity);
                    if (!string.IsNullOrEmpty(response.Message))
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        return(response);
                    }

                    #region Delete Detail & SupplyLedger

                    response.Message = SUIncrementDecrementDetailDao.DeleteSUIncrementDecrementDetailByRefId(sUIncrementDecrementEntity.RefId);
                    if (!string.IsNullOrEmpty(response.Message))
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        return(response);
                    }

                    response.Message = SupplyLedgerDao.DeleteSupplyLedgerByRefId(sUIncrementDecrementEntity.RefId, sUIncrementDecrementEntity.RefType);
                    if (response.Message != null)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(response);
                    }

                    #endregion

                    #region Insert Detail & SupplyLedger

                    if (sUIncrementDecrementEntity.SUIncrementDecrementDetails != null)
                    {
                        foreach (var sUIncrementDecrementDetailEntity in sUIncrementDecrementEntity.SUIncrementDecrementDetails)
                        {
                            sUIncrementDecrementDetailEntity.RefId       = sUIncrementDecrementEntity.RefId;
                            sUIncrementDecrementDetailEntity.RefDetailId = SUIncrementDecrementDetailDao.InsertSUIncrementDecrementDetail(sUIncrementDecrementDetailEntity);
                            if (!string.IsNullOrEmpty(response.Message))
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }

                            var supplyLedgerEntity = MakeSupplyLedger(sUIncrementDecrementEntity, sUIncrementDecrementDetailEntity);
                            supplyLedgerEntity.SupplyLedgerId = SupplyLedgerDao.InsertSupplyLedger(supplyLedgerEntity);
                            if (supplyLedgerEntity.SupplyLedgerId <= 0)
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }
                        }
                    }

                    #endregion

                    scope.Complete();
                }
                response.RefId = sUIncrementDecrementEntity.RefId;
                return(response);
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                return(response);
            }
        }
        /// <summary>
        /// Updates the ba deposit.
        /// </summary>
        /// <param name="sUIncrementDecrementEntity">The b a deposit entity.</param>
        /// <returns></returns>
        public SUIncrementDecrementResponse UpdateSUIncrementDecrement(
            SUIncrementDecrementEntity sUIncrementDecrementEntity)
        {
            var response = new SUIncrementDecrementResponse {
                Acknowledge = AcknowledgeType.Success
            };

            try
            {
                if (!sUIncrementDecrementEntity.Validate())
                {
                    foreach (var error in sUIncrementDecrementEntity.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
                using (var scope = new TransactionScope())
                {
                    var sUIncrementDecrementByRefNo =
                        SUIncrementDecrementDao.GetSUIncrementDecrementByRefNo(sUIncrementDecrementEntity.RefNo, sUIncrementDecrementEntity.PostedDate);
                    if (sUIncrementDecrementByRefNo != null && sUIncrementDecrementByRefNo.RefId != sUIncrementDecrementEntity.RefId)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        response.Message     = "Mã chứng từ đã tồn tại!";
                        return(response);
                    }
                    response.Message = SUIncrementDecrementDao.UpdateSUIncrementDecrement(sUIncrementDecrementEntity);
                    if (!string.IsNullOrEmpty(response.Message))
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        return(response);
                    }

                    #region Update account balance
                    //Trừ đi số tiền của chứng từ cũ trước khi cộng thêm số tiền mới

                    UpdateAccountBalance(sUIncrementDecrementEntity);
                    if (response.Message != null)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(response);
                    }

                    #endregion

                    #region Delete detail and insert detail

                    // Xóa bảng SUIncrementDecrementDetail
                    response.Message = SUIncrementDecrementDetailDao.DeleteSUIncrementDecrementDetailByRefId(sUIncrementDecrementEntity.RefId);
                    if (!string.IsNullOrEmpty(response.Message))
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        return(response);
                    }

                    // Xóa bảng SupplyLedger
                    response.Message = SupplyLedgerDao.DeleteSupplyLedgerByRefId(sUIncrementDecrementEntity.RefId, sUIncrementDecrementEntity.RefType);
                    if (response.Message != null)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(response);
                    }

                    if (sUIncrementDecrementEntity.SUIncrementDecrementDetails != null)
                    {
                        foreach (var sUIncrementDecrementDetailEntity in sUIncrementDecrementEntity.SUIncrementDecrementDetails)
                        {
                            if (sUIncrementDecrementEntity.RefType == (int)BuCA.Enum.RefType.SUDecrement)
                            {
                                AutoMapper(GetUnitsInDepartment(sUIncrementDecrementDetailEntity.InventoryItemId, sUIncrementDecrementDetailEntity.DepartmentId, sUIncrementDecrementDetailEntity.Quantity, sUIncrementDecrementDetailEntity.Description), response);
                                if (response.Acknowledge == AcknowledgeType.Failure)
                                {
                                    return(response);
                                }
                            }

                            sUIncrementDecrementDetailEntity.RefDetailId = Guid.NewGuid().ToString();
                            sUIncrementDecrementDetailEntity.RefId       = sUIncrementDecrementEntity.RefId;
                            response.Message =
                                SUIncrementDecrementDetailDao.InsertSUIncrementDecrementDetail(sUIncrementDecrementDetailEntity);
                            if (!string.IsNullOrEmpty(response.Message))
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }

                            #region Insert into AccountBalance

                            // Cộng thêm số tiền mới sau khi sửa chứng từ
                            InsertAccountBalance(sUIncrementDecrementEntity, sUIncrementDecrementDetailEntity);
                            if (response.Message != null)
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                scope.Dispose();
                                return(response);
                            }

                            #endregion

                            #region Insert OriginalGeneralLedger
                            // Xóa bảng OriginalGeneralLedger
                            response.Message = OriginalGeneralLedgerDao.DeleteOriginalGeneralLedger(sUIncrementDecrementEntity.RefId);
                            if (response.Message != null)
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                scope.Dispose();
                                return(response);
                            }

                            var originalGeneralLedgerEntity = new OriginalGeneralLedgerEntity
                            {
                                OriginalGeneralLedgerId = Guid.NewGuid().ToString(),
                                RefType           = sUIncrementDecrementEntity.RefType,
                                RefId             = sUIncrementDecrementEntity.RefId,
                                RefDetailId       = sUIncrementDecrementDetailEntity.RefDetailId,
                                RefDate           = sUIncrementDecrementEntity.RefDate,
                                RefNo             = sUIncrementDecrementEntity.RefNo,
                                Amount            = sUIncrementDecrementDetailEntity.Amount,
                                BudgetChapterCode = sUIncrementDecrementDetailEntity.BudgetChapterCode,
                                CreditAccount     = sUIncrementDecrementDetailEntity.CreditAccount,
                                DebitAccount      = sUIncrementDecrementDetailEntity.DebitAccount,
                                Description       = sUIncrementDecrementDetailEntity.Description,
                                JournalMemo       = sUIncrementDecrementEntity.JournalMemo,
                                SortOrder         = sUIncrementDecrementDetailEntity.SortOrder,
                                PostedDate        = sUIncrementDecrementEntity.PostedDate,

                                // Không có Currency trong db : mặc định VNĐ và 1
                                CurrencyCode = "VND",
                                ExchangeRate = 1,
                            };
                            response.Message = OriginalGeneralLedgerDao.InsertOriginalGeneralLedger(originalGeneralLedgerEntity);
                            if (!string.IsNullOrEmpty(response.Message))
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }
                            #endregion

                            if (sUIncrementDecrementEntity.RefType == 205 || sUIncrementDecrementEntity.RefType == 206)
                            {
                                #region Insert SupplyLedger
                                if (sUIncrementDecrementDetailEntity.InventoryItemId != null)
                                {
                                    var supplyLedgerEntity = new SupplyLedgerEntity
                                    {
                                        SupplyLedgerId    = Guid.NewGuid().ToString(),
                                        RefId             = sUIncrementDecrementEntity.RefId,
                                        RefType           = sUIncrementDecrementEntity.RefType,
                                        RefNo             = sUIncrementDecrementEntity.RefNo,
                                        RefDate           = sUIncrementDecrementEntity.RefDate,
                                        PostedDate        = sUIncrementDecrementEntity.PostedDate,
                                        DepartmentId      = sUIncrementDecrementDetailEntity.DepartmentId,
                                        InventoryItemId   = sUIncrementDecrementDetailEntity.InventoryItemId,
                                        Unit              = null,
                                        UnitPrice         = sUIncrementDecrementDetailEntity.UnitPrice,
                                        IncrementQuantity = sUIncrementDecrementEntity.RefType == 205 ? sUIncrementDecrementDetailEntity.Quantity : 0,
                                        DecrementQuantity = sUIncrementDecrementEntity.RefType == 205 ? 0 : sUIncrementDecrementDetailEntity.Quantity,
                                        IncrementAmount   = sUIncrementDecrementEntity.RefType == 205 ? sUIncrementDecrementDetailEntity.Amount : 0,
                                        DecrementAmount   = sUIncrementDecrementEntity.RefType == 205 ? 0 : sUIncrementDecrementDetailEntity.Amount,
                                        JournalMemo       = sUIncrementDecrementEntity.JournalMemo,
                                        Description       = sUIncrementDecrementDetailEntity.Description,
                                        AccountNumber     = sUIncrementDecrementDetailEntity.DebitAccount,
                                        RefDetailId       = sUIncrementDecrementDetailEntity.RefDetailId
                                    };
                                    response.Message = SupplyLedgerDao.InsertSupplyLedger(supplyLedgerEntity);
                                    if (!string.IsNullOrEmpty(response.Message))
                                    {
                                        response.Acknowledge = AcknowledgeType.Failure;
                                        return(response);
                                    }
                                }
                                #endregion
                            }
                        }
                    }

                    #endregion

                    scope.Complete();
                }
                response.RefId = sUIncrementDecrementEntity.RefId;
                return(response);
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                return(response);
            }
        }
        /// <summary>
        /// Inserts the ba deposit.
        /// </summary>
        /// <param name="sUIncrementDecrementEntity">The b a deposit entity.</param>
        /// <returns></returns>
        public SUIncrementDecrementResponse InsertSUIncrementDecrement(SUIncrementDecrementEntity sUIncrementDecrementEntity, bool isconvertDB)
        {
            var response = new SUIncrementDecrementResponse {
                Acknowledge = AcknowledgeType.Success
            };

            try
            {
                if (!sUIncrementDecrementEntity.Validate())
                {
                    foreach (var error in sUIncrementDecrementEntity.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
                using (var scope = new TransactionScope())
                {
                    var sUIncrementDecrementByRefNo =
                        SUIncrementDecrementDao.GetSUIncrementDecrementByRefNo(sUIncrementDecrementEntity.RefNo, sUIncrementDecrementEntity.PostedDate);
                    if (sUIncrementDecrementByRefNo != null && sUIncrementDecrementByRefNo.PostedDate.Year == sUIncrementDecrementEntity.PostedDate.Year)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        response.Message     = "Mã chứng từ đã tồn tại!";
                        return(response);
                    }
                    sUIncrementDecrementEntity.RefId = Guid.NewGuid().ToString();
                    response.Message = SUIncrementDecrementDao.InsertSUIncrementDecrement(sUIncrementDecrementEntity);
                    if (!string.IsNullOrEmpty(response.Message))
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        return(response);
                    }

                    #region insert SUIncrementDecrementDetails

                    if (sUIncrementDecrementEntity.SUIncrementDecrementDetails != null)
                    {
                        foreach (var sUIncrementDecrementDetailEntity in sUIncrementDecrementEntity.SUIncrementDecrementDetails)
                        {
                            if (!isconvertDB)//AnhNT: Nếu không phải convert dữ liệu thì mới check số lượng tồn
                            {
                                if (sUIncrementDecrementEntity.RefType == (int)BuCA.Enum.RefType.SUDecrement)
                                {
                                    AutoMapper(
                                        GetUnitsInDepartment(sUIncrementDecrementDetailEntity.InventoryItemId,
                                                             sUIncrementDecrementDetailEntity.DepartmentId,
                                                             sUIncrementDecrementDetailEntity.Quantity,
                                                             sUIncrementDecrementDetailEntity.Description), response);
                                    if (response.Acknowledge == AcknowledgeType.Failure)
                                    {
                                        return(response);
                                    }
                                }
                            }

                            sUIncrementDecrementDetailEntity.RefDetailId = Guid.NewGuid().ToString();
                            sUIncrementDecrementDetailEntity.RefId       = sUIncrementDecrementEntity.RefId;
                            response.Message =
                                SUIncrementDecrementDetailDao.InsertSUIncrementDecrementDetail(sUIncrementDecrementDetailEntity);
                            if (!string.IsNullOrEmpty(response.Message))
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }

                            #region Insert to AccountBalance

                            InsertAccountBalance(sUIncrementDecrementEntity, sUIncrementDecrementDetailEntity);

                            #endregion

                            #region Insert OriginalGeneralLedger
                            var originalGeneralLedgerEntity = new OriginalGeneralLedgerEntity
                            {
                                OriginalGeneralLedgerId = Guid.NewGuid().ToString(),
                                RefType           = sUIncrementDecrementEntity.RefType,
                                RefId             = sUIncrementDecrementEntity.RefId,
                                RefDetailId       = sUIncrementDecrementDetailEntity.RefDetailId,
                                RefDate           = sUIncrementDecrementEntity.RefDate,
                                RefNo             = sUIncrementDecrementEntity.RefNo,
                                Amount            = sUIncrementDecrementDetailEntity.Amount,
                                BudgetChapterCode = sUIncrementDecrementDetailEntity.BudgetChapterCode,
                                CreditAccount     = sUIncrementDecrementDetailEntity.CreditAccount,
                                DebitAccount      = sUIncrementDecrementDetailEntity.DebitAccount,
                                Description       = sUIncrementDecrementDetailEntity.Description,
                                JournalMemo       = sUIncrementDecrementEntity.JournalMemo,
                                SortOrder         = sUIncrementDecrementDetailEntity.SortOrder,
                                PostedDate        = sUIncrementDecrementEntity.PostedDate,

                                // Không có Currency trong db : mặc định VNĐ và 1
                                CurrencyCode = "VND",
                                ExchangeRate = 1,
                            };
                            response.Message = OriginalGeneralLedgerDao.InsertOriginalGeneralLedger(originalGeneralLedgerEntity);
                            if (!string.IsNullOrEmpty(response.Message))
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }
                            #endregion

                            if (sUIncrementDecrementEntity.RefType == 205 || sUIncrementDecrementEntity.RefType == 206)
                            {
                                #region Insert SupplyLedger
                                if (sUIncrementDecrementDetailEntity.InventoryItemId != null)
                                {
                                    var supplyLedgerEntity = new SupplyLedgerEntity
                                    {
                                        SupplyLedgerId    = Guid.NewGuid().ToString(),
                                        RefId             = sUIncrementDecrementEntity.RefId,
                                        RefType           = sUIncrementDecrementEntity.RefType,
                                        RefNo             = sUIncrementDecrementEntity.RefNo,
                                        RefDate           = sUIncrementDecrementEntity.RefDate,
                                        PostedDate        = sUIncrementDecrementEntity.PostedDate,
                                        DepartmentId      = sUIncrementDecrementDetailEntity.DepartmentId,
                                        InventoryItemId   = sUIncrementDecrementDetailEntity.InventoryItemId,
                                        Unit              = null,
                                        UnitPrice         = sUIncrementDecrementDetailEntity.UnitPrice,
                                        IncrementQuantity = sUIncrementDecrementEntity.RefType == 205 ? sUIncrementDecrementDetailEntity.Quantity : 0,
                                        DecrementQuantity = sUIncrementDecrementEntity.RefType == 205 ? 0 : sUIncrementDecrementDetailEntity.Quantity,
                                        IncrementAmount   = sUIncrementDecrementEntity.RefType == 205 ? sUIncrementDecrementDetailEntity.Amount : 0,
                                        DecrementAmount   = sUIncrementDecrementEntity.RefType == 205 ? 0 : sUIncrementDecrementDetailEntity.Amount,
                                        JournalMemo       = sUIncrementDecrementEntity.JournalMemo,
                                        Description       = sUIncrementDecrementDetailEntity.Description,
                                        AccountNumber     = sUIncrementDecrementDetailEntity.DebitAccount,
                                        RefDetailId       = sUIncrementDecrementDetailEntity.RefDetailId
                                    };
                                    response.Message = SupplyLedgerDao.InsertSupplyLedger(supplyLedgerEntity);
                                    if (!string.IsNullOrEmpty(response.Message))
                                    {
                                        response.Acknowledge = AcknowledgeType.Failure;
                                        return(response);
                                    }
                                }
                                #endregion
                            }
                        }
                    }

                    #endregion

                    scope.Complete();
                }
                response.RefId = sUIncrementDecrementEntity.RefId;
                return(response);
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                return(response);
            }
        }