Esempio n. 1
0
        /// <summary>
        /// Deletes the ca payment.
        /// </summary>
        /// <param name="refId">The reference identifier.</param>
        /// <returns>
        /// CAPaymentResponse.
        /// </returns>
        public BUBudgetReserveResponse DeleteBUBudgetReservet(string refId)
        {
            var buPlanReceiptResponse = new BUBudgetReserveResponse {
                Acknowledge = AcknowledgeType.Success
            };

            using (var scope = new TransactionScope())
            {
                var buPlanReceiptEntityForDelete = BUBudgetReserveDao.GetBUBudgetReserveByRefId(refId);

                #region Update account balance
                // Cập nhật giá trị vào account balance trước khi xóa
                buPlanReceiptResponse.Message = UpdateAccountBalance(buPlanReceiptEntityForDelete);
                if (buPlanReceiptResponse.Message != null)
                {
                    buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                    scope.Dispose();
                    return(buPlanReceiptResponse);
                }

                #endregion

                buPlanReceiptResponse.Message = BUBudgetReserveDao.DeleteBUBudgetReserve(buPlanReceiptEntityForDelete);
                if (buPlanReceiptResponse.Message != null)
                {
                    buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                    scope.Dispose();
                    return(buPlanReceiptResponse);
                }

                //Xóa bảng GeneralLedger
                buPlanReceiptResponse.Message = GeneralLedgerDao.DeleteGeneralLedger(buPlanReceiptEntityForDelete.RefId);
                if (buPlanReceiptResponse.Message != null)
                {
                    buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                    scope.Dispose();
                    return(buPlanReceiptResponse);
                }

                //Xóa bảng OriginalGeneralLedger
                buPlanReceiptResponse.Message = OriginalGeneralLedgerDao.DeleteOriginalGeneralLedger(buPlanReceiptEntityForDelete.RefId);
                if (buPlanReceiptResponse.Message != null)
                {
                    buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                    scope.Dispose();
                    return(buPlanReceiptResponse);
                }
                scope.Complete();
            }

            return(buPlanReceiptResponse);
        }
Esempio n. 2
0
        /// <summary>
        /// Updates the ca payment.
        /// </summary>
        /// <param name="buPlanReceiptEntity">The bu plan receipt entity.</param>
        /// <returns>
        /// CAPaymentResponse.
        /// </returns>
        public BUBudgetReserveResponse UpdateBUBudgetReservet(BUBudgetReserveEntity buPlanReceiptEntity)
        {
            var buPlanReceiptResponse = new BUBudgetReserveResponse {
                Acknowledge = AcknowledgeType.Success
            };

            try
            {
                if (buPlanReceiptEntity != null && !buPlanReceiptEntity.Validate())
                {
                    foreach (var error in buPlanReceiptEntity.ValidationErrors)
                    {
                        buPlanReceiptResponse.Message += error + Environment.NewLine;
                    }
                    buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                    return(buPlanReceiptResponse);
                }

                using (var scope = new TransactionScope())
                {
                    if (buPlanReceiptEntity != null)
                    {
                        var buPlanReceiptForExisting = BUBudgetReserveDao.GetBUBudgetReserve(buPlanReceiptEntity.RefNo.Trim(), buPlanReceiptEntity.PostedDate);
                        if (buPlanReceiptForExisting != null && buPlanReceiptForExisting.PostedDate.Year == buPlanReceiptEntity.PostedDate.Year)
                        {
                            if (buPlanReceiptForExisting.RefId != buPlanReceiptEntity.RefId)
                            {
                                buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                                buPlanReceiptResponse.Message     = @"Số chứng từ '" + buPlanReceiptEntity.RefNo.Trim() + @"' đã tồn tại!";
                                return(buPlanReceiptResponse);
                            }
                        }

                        buPlanReceiptResponse.Message = BUBudgetReserveDao.UpdateBUBudgetReserve(buPlanReceiptEntity);
                        if (buPlanReceiptResponse.Message != null)
                        {
                            buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(buPlanReceiptResponse);
                        }

                        #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(buPlanReceiptEntity);
                        if (buPlanReceiptResponse.Message != null)
                        {
                            buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(buPlanReceiptResponse);
                        }

                        #endregion

                        // Xóa bảng BUBudgetReservetDetail
                        buPlanReceiptResponse.Message = BUBudgetReserveDetailDao.DeleteBUBudgetReserveDetail(buPlanReceiptEntity.RefId);
                        if (buPlanReceiptResponse.Message != null)
                        {
                            buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(buPlanReceiptResponse);
                        }

                        // Xóa bảng GeneralLedger
                        buPlanReceiptResponse.Message = GeneralLedgerDao.DeleteGeneralLedger(buPlanReceiptEntity.RefId);
                        if (buPlanReceiptResponse.Message != null)
                        {
                            buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(buPlanReceiptResponse);
                        }

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

                        foreach (var buPlanReceiptDetail in buPlanReceiptEntity.BudgetReserveDetails)
                        {
                            buPlanReceiptDetail.RefId       = buPlanReceiptEntity.RefId;
                            buPlanReceiptDetail.RefDetailId = Guid.NewGuid().ToString();

                            if (!buPlanReceiptDetail.Validate())
                            {
                                foreach (string error in buPlanReceiptDetail.ValidationErrors)
                                {
                                    buPlanReceiptResponse.Message += error + Environment.NewLine;
                                }
                                buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                                return(buPlanReceiptResponse);
                            }
                            buPlanReceiptResponse.Message = BUBudgetReserveDetailDao.InsertBUBudgetReserveDetail(buPlanReceiptDetail);
                            if (!string.IsNullOrEmpty(buPlanReceiptResponse.Message))
                            {
                                buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                                return(buPlanReceiptResponse);
                            }

                            #region Insert into AccountBalance

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

                            #endregion

                            #region Insert into GeneralLedger
                            if (buPlanReceiptDetail.BankAccount != null)
                            {
                                var generalLedgerEntity = new GeneralLedgerEntity
                                {
                                    RefType               = buPlanReceiptEntity.RefType,
                                    RefNo                 = buPlanReceiptEntity.RefNo,
                                    ProjectId             = buPlanReceiptDetail.ProjectId,
                                    BudgetSourceId        = buPlanReceiptDetail.BudgetSourceId,
                                    Description           = buPlanReceiptDetail.Description,
                                    RefDetailId           = buPlanReceiptDetail.RefDetailId,
                                    ExchangeRate          = buPlanReceiptEntity.ExchangeRate,
                                    BudgetSubKindItemCode = buPlanReceiptDetail.BudgetSubKindItemCode,
                                    CurrencyCode          = buPlanReceiptEntity.CurrencyCode,
                                    BudgetKindItemCode    = buPlanReceiptDetail.BudgetKindItemCode,
                                    RefId                 = buPlanReceiptEntity.RefId,
                                    PostedDate            = buPlanReceiptEntity.PostedDate,
                                    BudgetItemCode        = buPlanReceiptDetail.BudgetItemCode,
                                    ListItemId            = buPlanReceiptDetail.ListItemId,
                                    BudgetSubItemCode     = buPlanReceiptDetail.BudgetSubItemCode,
                                    BudgetDetailItemCode  = buPlanReceiptDetail.BudgetDetailItemCode,
                                    //AccountNumber = buPlanReceiptDetail.DebitAccount,
                                    //DebitAmount = buPlanReceiptDetail.DebitAccount == null ? 0 : buPlanReceiptDetail.Amount,
                                    //DebitAmountOC = buPlanReceiptDetail.DebitAccount == null ? 0 : buPlanReceiptDetail.AmountOC,
                                    CreditAmount    = 0,
                                    CreditAmountOC  = 0,
                                    FundStructureId = buPlanReceiptDetail.FundStructureId,
                                    GeneralLedgerId = Guid.NewGuid().ToString(),
                                    JournalMemo     = buPlanReceiptEntity.JournalMemo,
                                    RefDate         = buPlanReceiptEntity.RefDate,
                                    SortOrder       = buPlanReceiptDetail.SortOrder
                                };

                                buPlanReceiptResponse.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);

                                if (!string.IsNullOrEmpty(buPlanReceiptResponse.Message))
                                {
                                    buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                                    return(buPlanReceiptResponse);
                                }
                            }
                            #endregion

                            #region Insert OriginalGeneralLedger
                            var originalGeneralLedgerEntity = new OriginalGeneralLedgerEntity
                            {
                                OriginalGeneralLedgerId = Guid.NewGuid().ToString(),
                                RefType     = buPlanReceiptEntity.RefType,
                                RefId       = buPlanReceiptEntity.RefId,
                                RefDetailId = buPlanReceiptDetail.RefDetailId,
                                RefDate     = buPlanReceiptEntity.RefDate,
                                RefNo       = buPlanReceiptEntity.RefNo,
                                Amount      = buPlanReceiptDetail.Amount,
                                AmountOC    = buPlanReceiptDetail.AmountOC,
                                //BankId = buPlanReceiptDetail.BankId,
                                BudgetChapterCode     = buPlanReceiptEntity.BudgetChapterCode,
                                BudgetDetailItemCode  = buPlanReceiptDetail.BudgetDetailItemCode,
                                BudgetItemCode        = buPlanReceiptDetail.BudgetItemCode,
                                BudgetKindItemCode    = buPlanReceiptDetail.BudgetKindItemCode,
                                BudgetSourceId        = buPlanReceiptDetail.BudgetSourceId,
                                BudgetSubItemCode     = buPlanReceiptDetail.BudgetSubItemCode,
                                BudgetSubKindItemCode = buPlanReceiptDetail.BudgetSubKindItemCode,
                                //DebitAccount = buPlanReceiptDetail.DebitAccount,
                                Description     = buPlanReceiptDetail.Description,
                                FundStructureId = buPlanReceiptDetail.FundStructureId,
                                JournalMemo     = buPlanReceiptEntity.JournalMemo,
                                ProjectId       = buPlanReceiptDetail.ProjectId,
                                //ToBankId = buPlanReceiptDetail.BankId,
                                SortOrder    = buPlanReceiptDetail.SortOrder,
                                PostedDate   = buPlanReceiptEntity.PostedDate,
                                CurrencyCode = buPlanReceiptEntity.CurrencyCode,
                                ExchangeRate = buPlanReceiptEntity.ExchangeRate,
                            };
                            buPlanReceiptResponse.Message = OriginalGeneralLedgerDao.InsertOriginalGeneralLedger(originalGeneralLedgerEntity);
                            if (!string.IsNullOrEmpty(buPlanReceiptResponse.Message))
                            {
                                buPlanReceiptResponse.Acknowledge = AcknowledgeType.Failure;
                                return(buPlanReceiptResponse);
                            }

                            #endregion
                        }

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

                        buPlanReceiptResponse.RefId = buPlanReceiptEntity.RefId;
                    }
                    scope.Complete();
                }

                return(buPlanReceiptResponse);
            }
            catch (Exception ex)
            {
                buPlanReceiptResponse.Message = ex.Message;
                return(buPlanReceiptResponse);
            }
        }