/// <summary>
 /// Takes the specified original general ledger entity.
 /// </summary>
 /// <param name="originalGeneralLedgerEntity">The original general ledger entity.</param>
 /// <returns>
 /// System.Object[].
 /// </returns>
 private object[] Take(OriginalGeneralLedgerEntity originalGeneralLedgerEntity)
 {
     return(new object[]
     {
         "@OriginalGeneralLedgerID", originalGeneralLedgerEntity.OriginalGeneralLedgerId,
         "@RefID", originalGeneralLedgerEntity.RefId,
         "@RefDetailID", originalGeneralLedgerEntity.RefDetailId,
         "@RefType", originalGeneralLedgerEntity.RefType,
         "@RefNo", originalGeneralLedgerEntity.RefNo,
         "@CurrencyCode", originalGeneralLedgerEntity.CurrencyCode,
         "@ExchangeRate", originalGeneralLedgerEntity.ExchangeRate,
         "@RefDate", originalGeneralLedgerEntity.RefDate,
         "@PostedDate", originalGeneralLedgerEntity.PostedDate,
         "@InvNo", originalGeneralLedgerEntity.InvNo,
         "@InvDate", originalGeneralLedgerEntity.InvDate,
         "@DebitAccount", originalGeneralLedgerEntity.DebitAccount,
         "@CreditAccount", originalGeneralLedgerEntity.CreditAccount,
         "@AmountOC", originalGeneralLedgerEntity.AmountOC,
         "@Amount", originalGeneralLedgerEntity.Amount,
         "@JournalMemo", originalGeneralLedgerEntity.JournalMemo,
         "@Description", originalGeneralLedgerEntity.Description,
         "@BudgetSourceID", originalGeneralLedgerEntity.BudgetSourceId,
         "@BudgetChapterCode", originalGeneralLedgerEntity.BudgetChapterCode,
         "@BudgetKindItemCode", originalGeneralLedgerEntity.BudgetKindItemCode,
         "@BudgetSubKindItemCode", originalGeneralLedgerEntity.BudgetSubKindItemCode,
         "@BudgetItemCode", originalGeneralLedgerEntity.BudgetItemCode,
         "@BudgetSubItemCode", originalGeneralLedgerEntity.BudgetSubItemCode,
         "@MethodDistributeID", originalGeneralLedgerEntity.MethodDistributeId,
         "@CashWithDrawTypeID", originalGeneralLedgerEntity.CashWithDrawTypeId,
         "@AccountingObjectID", originalGeneralLedgerEntity.AccountingObjectId,
         "@CreditAccountingObjectID", originalGeneralLedgerEntity.CreditAccountingObjectId,
         "@ActivityID", originalGeneralLedgerEntity.ActivityId,
         "@ProjectID", originalGeneralLedgerEntity.ProjectId,
         "@ProjectActivityID", originalGeneralLedgerEntity.ProjectActivityId,
         "@ProjectExpenseID", originalGeneralLedgerEntity.ProjectExpenseId,
         "@ListItemID", originalGeneralLedgerEntity.ListItemId,
         "@PurchasePurposeID", originalGeneralLedgerEntity.PurchasePurposeId,
         "@PurchasePurposeCode", originalGeneralLedgerEntity.PurchasePurposeCode,
         "@OrgPrice", originalGeneralLedgerEntity.OrgPrice,
         "@BankID", originalGeneralLedgerEntity.BankId,
         "@BankName", originalGeneralLedgerEntity.BankName,
         "@ToBankID", originalGeneralLedgerEntity.ToBankId,
         "@Approved", originalGeneralLedgerEntity.Approved,
         "@InvType", originalGeneralLedgerEntity.InvType,
         "@TaxAccount", originalGeneralLedgerEntity.TaxAccount,
         "@TaxAmount", originalGeneralLedgerEntity.TaxAmount,
         "@BudgetDetailItemCode", originalGeneralLedgerEntity.BudgetDetailItemCode,
         "@SortOrder", originalGeneralLedgerEntity.SortOrder,
         "@OrgRefNo", originalGeneralLedgerEntity.OrgRefNo,
         "@OrgRefDate", originalGeneralLedgerEntity.OrgRefDate,
         "@FundStructureID", originalGeneralLedgerEntity.FundStructureId,
         "@BudgetProvideCode", originalGeneralLedgerEntity.BudgetProvideCode,
         "@BudgetExpenseID", originalGeneralLedgerEntity.BudgetExpenseId,
         "@ContractID", originalGeneralLedgerEntity.ContractId
     });
 }
예제 #2
0
        /// <summary>
        /// Inserts the bu commitment request.
        /// </summary>
        /// <param name="bUCommitmentRequest">The b u commitment request.</param>
        /// <returns>BUCommitmentAdjustmentResponse.</returns>
        public BUCommitmentAdjustmentResponse InsertBUCommitmentAdjustment(BUCommitmentAdjustmentEntity bUCommitmentRequest)
        {
            var bUCommitmentRequestResponse = new BUCommitmentAdjustmentResponse {
                Acknowledge = AcknowledgeType.Success
            };


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

            using (var scope = new TransactionScope())
            {
                if (bUCommitmentRequest != null)
                {
                    var bUCommitmentAdjust = BUCommitmentAdjustmentDao.GetBUCommitmentAdjustmentsByRefNo(bUCommitmentRequest.RefNo, bUCommitmentRequest.PostedDate);
                    if (bUCommitmentAdjust != null && bUCommitmentAdjust.PostedDate.Year == bUCommitmentRequest.PostedDate.Year)
                    {
                        bUCommitmentRequestResponse.Message     = string.Format("Số phiếu điều chỉnh \'{0}\' đã tồn tại!", bUCommitmentRequest.RefNo);
                        bUCommitmentRequestResponse.Acknowledge = AcknowledgeType.Failure;
                        return(bUCommitmentRequestResponse);
                    }

                    bUCommitmentRequest.RefId           = Guid.NewGuid().ToString();
                    bUCommitmentRequestResponse.Message = BUCommitmentAdjustmentDao.InsertBUCommitmentAdjustment(bUCommitmentRequest);

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

                    foreach (var bUCommitmentRequestDetail in bUCommitmentRequest.BUCommitmentAdjustmentDetails)
                    {
                        bUCommitmentRequestDetail.RefId       = bUCommitmentRequest.RefId;
                        bUCommitmentRequestDetail.RefDetailId = Guid.NewGuid().ToString();
                        if (!bUCommitmentRequestDetail.Validate())
                        {
                            foreach (var error in bUCommitmentRequestDetail.ValidationErrors)
                            {
                                bUCommitmentRequestResponse.Message += error + Environment.NewLine;
                            }
                            bUCommitmentRequestResponse.Acknowledge = AcknowledgeType.Failure;
                            return(bUCommitmentRequestResponse);
                        }
                        bUCommitmentRequestResponse.Message =
                            BUCommitmentAdjustmentDetailDao.InsertBUCommitmentAdjustmenttDetail(bUCommitmentRequestDetail);
                        if (!string.IsNullOrEmpty(bUCommitmentRequestResponse.Message))
                        {
                            bUCommitmentRequestResponse.Acknowledge = AcknowledgeType.Failure;
                            return(bUCommitmentRequestResponse);
                        }

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

                        #endregion
                    }

                    if (bUCommitmentRequestResponse.Message != null)
                    {
                        bUCommitmentRequestResponse.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(bUCommitmentRequestResponse);
                    }
                    bUCommitmentRequestResponse.RefId = bUCommitmentRequest.RefId;
                    scope.Complete();
                }

                return(bUCommitmentRequestResponse);
            }
        }
        /// <summary>
        /// Inserts the general ledger.
        /// </summary>
        /// <param name="generalLedgerEntity">The general ledger entity.</param>
        /// <returns>
        /// System.Int32.
        /// </returns>
        public string InsertOriginalGeneralLedger(OriginalGeneralLedgerEntity generalLedgerEntity)
        {
            const string procedures = @"uspInsert_OriginalGeneralLedger";

            return(Db.Insert(procedures, true, Take(generalLedgerEntity)));
        }
예제 #4
0
        /// <summary>
        /// Updates the ca planWithdraw.
        /// </summary>
        /// <param name="planWithdrawEntity">The planWithdraw entity.</param>
        /// <returns>BUPlanWithdrawResponse.</returns>
        public BUPlanWithdrawResponse UpdateBUPlanWithdraw(BUPlanWithdrawEntity planWithdrawEntity)
        {
            var planWithdrawResponse = new BUPlanWithdrawResponse {
                Acknowledge = AcknowledgeType.Success
            };

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

                using (var scope = new TransactionScope())
                {
                    // Trừ số tiền khi mà update xử lý Bảng cân đối tài khoản////////////////////////////////////
                    //accountBalances.Clear();
                    if (planWithdrawEntity != null)
                    {
                        //accountBalances = GetListAccountBalanceOlder(planWithdrawEntity.RefId);
                        //foreach (var accountBalanceEntity in accountBalances)
                        //{
                        //    var obAccoutBalanceExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceEntity);
                        //    if (obAccoutBalanceExit != null)
                        //    {
                        //        obAccoutBalanceExit.CurrencyCode = accountBalanceEntity.CurrencyCode;

                        //        // cập nhật bên TK nợ
                        //        if (accountBalanceEntity.MovementCreditAmountOC == 0)
                        //        {
                        //            obAccoutBalanceExit.ExchangeRate = accountBalanceEntity.ExchangeRate;
                        //            obAccoutBalanceExit.MovementDebitAmountExchange =
                        //                obAccoutBalanceExit.MovementDebitAmountExchange - accountBalanceEntity.MovementDebitAmountExchange;
                        //            obAccoutBalanceExit.MovementDebitAmountOC =
                        //                obAccoutBalanceExit.MovementDebitAmountOC - accountBalanceEntity.MovementDebitAmountOC;
                        //            AccountBalanceDao.UpdateAccountBalance(obAccoutBalanceExit);
                        //        }
                        //        else
                        //        {
                        //            obAccoutBalanceExit.ExchangeRate = accountBalanceEntity.ExchangeRate;
                        //            obAccoutBalanceExit.MovementCreditAmountExchange =
                        //                obAccoutBalanceExit.MovementCreditAmountExchange - accountBalanceEntity.MovementCreditAmountExchange;
                        //            obAccoutBalanceExit.MovementCreditAmountOC =
                        //                obAccoutBalanceExit.MovementCreditAmountOC - accountBalanceEntity.MovementCreditAmountOC;
                        //            AccountBalanceDao.UpdateAccountBalance(obAccoutBalanceExit);
                        //        }
                        //    }

                        //}
                        // Cập nhật lại dữ liệu vào bảng cân đối tài khoản
                        //accountBalances.Clear();
                        //accountBalances = GetListAccountBalance(planWithdrawEntity);
                        //foreach (var accountBalanceEntity in accountBalances)
                        //{
                        //    var obAccoutBalanceExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceEntity);
                        //    if (obAccoutBalanceExit != null)
                        //    {
                        //        obAccoutBalanceExit.CurrencyCode = accountBalanceEntity.CurrencyCode;

                        //        // cập nhật bên TK nợ
                        //        if (accountBalanceEntity.MovementCreditAmountOC == 0)
                        //        {
                        //            obAccoutBalanceExit.ExchangeRate = accountBalanceEntity.ExchangeRate;
                        //            obAccoutBalanceExit.MovementDebitAmountExchange =
                        //                obAccoutBalanceExit.MovementDebitAmountExchange + accountBalanceEntity.MovementDebitAmountExchange;
                        //            obAccoutBalanceExit.MovementDebitAmountOC =
                        //                obAccoutBalanceExit.MovementDebitAmountOC + accountBalanceEntity.MovementDebitAmountOC;
                        //            AccountBalanceDao.UpdateAccountBalance(obAccoutBalanceExit);
                        //        }
                        //        else
                        //        {
                        //            obAccoutBalanceExit.ExchangeRate = accountBalanceEntity.ExchangeRate;
                        //            obAccoutBalanceExit.MovementCreditAmountExchange =
                        //                obAccoutBalanceExit.MovementCreditAmountExchange + accountBalanceEntity.MovementCreditAmountExchange;
                        //            obAccoutBalanceExit.MovementCreditAmountOC =
                        //                obAccoutBalanceExit.MovementCreditAmountOC + accountBalanceEntity.MovementCreditAmountOC;
                        //            AccountBalanceDao.UpdateAccountBalance(obAccoutBalanceExit);
                        //        }
                        //    }
                        //    else
                        //    {
                        //        AccountBalanceDao.InsertAccountBalance(accountBalanceEntity);
                        //    }
                        //}
                        // Xóa dữ liệu trống trong bảng Cân đối tài khoản
                        //AccountBalanceDao.DeleteAccountBalance();

                        //check ma trung
                        var planWithdrawEntityExisted = BUPlanWithdrawDao.GetBUPlanWithdrawByRefNoRefType(planWithdrawEntity.RefNo.Trim(), planWithdrawEntity.RefType, planWithdrawEntity.PostedDate);
                        if (planWithdrawEntityExisted != null && planWithdrawEntityExisted.RefId != planWithdrawEntity.RefId && planWithdrawEntityExisted.PostedDate.Year == planWithdrawEntity.PostedDate.Year)
                        {
                            planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            planWithdrawResponse.Message     = @"Số chứng từ '" + planWithdrawEntity.RefNo + @"' đã tồn tại!";
                            return(planWithdrawResponse);
                        }


                        planWithdrawResponse.Message = BUPlanWithdrawDetailDao.DeleteBUPlanWithdrawDetailByRefId(planWithdrawEntity.RefId);
                        if (planWithdrawResponse.Message != null)
                        {
                            planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(planWithdrawResponse);
                        }

                        #region Delete OriginalGeneralLedger
                        if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                        {
                            planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            return(planWithdrawResponse);
                        }
                        planWithdrawResponse.Message = OriginalGeneralLedgerDao.DeleteOriginalGeneralLedger(planWithdrawEntity.RefId);
                        #endregion

                        //if (planWithdrawEntity.RefTypeId == 600)
                        //{
                        //    //Update Lại các mục Khoản lương
                        //    //Lấy lại số chứng từ cũ thay the số chứng từ mới
                        //    var objBUPlanWithdraw = BUPlanWithdrawDao.GetBUPlanWithdraw(planWithdrawEntity.RefId);
                        //    planWithdrawResponse.Message = BUPlanWithdrawDao.UpdateEmployeePayroll(objBUPlanWithdraw.RefNo, planWithdrawEntity.RefNo, planWithdrawEntity.PostedDate.Month + "/" + planWithdrawEntity.PostedDate.Day + "/" + planWithdrawEntity.PostedDate.Year);
                        //}
                        planWithdrawResponse.Message = BUPlanWithdrawDao.UpdateBUPlanWithdraw(planWithdrawEntity);
                        if (planWithdrawResponse.Message != null)
                        {
                            planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            scope.Dispose();
                            return(planWithdrawResponse);
                        }
                        //var jourentryAccount = journalEntryAccounts[0];
                        //planWithdrawResponse.Message = JournalEntryAccountDao.DeleteJournalEntryAccount(jourentryAccount);
                        //if (planWithdrawResponse.Message != null)
                        //{
                        //    planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                        //    scope.Dispose();
                        //    return planWithdrawResponse;
                        //}
                        foreach (var planWithdrawDetail in planWithdrawEntity.BUPlanWithdrawDetails)
                        {
                            planWithdrawDetail.RefId       = planWithdrawEntity.RefId;
                            planWithdrawDetail.RefDetailId = Guid.NewGuid().ToString();

                            if (!planWithdrawDetail.Validate())
                            {
                                foreach (string error in planWithdrawDetail.ValidationErrors)
                                {
                                    planWithdrawResponse.Message += error + Environment.NewLine;
                                }
                                planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                                return(planWithdrawResponse);
                            }
                            planWithdrawResponse.Message = BUPlanWithdrawDetailDao.InsertBUPlanWithdrawDetail(planWithdrawDetail);
                            if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                            {
                                planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                                return(planWithdrawResponse);
                            }

                            #region Insert OriginalGeneralLedger
                            var originalGeneralLedgerEntity = new OriginalGeneralLedgerEntity
                            {
                                OriginalGeneralLedgerId = Guid.NewGuid().ToString(),
                                RefType               = planWithdrawEntity.RefType,
                                RefId                 = planWithdrawEntity.RefId,
                                RefDetailId           = planWithdrawDetail.RefDetailId,
                                OrgRefDate            = planWithdrawDetail.OrgRefDate,
                                OrgRefNo              = planWithdrawDetail.OrgRefNo,
                                RefDate               = planWithdrawEntity.RefDate,
                                RefNo                 = planWithdrawEntity.RefNo,
                                Amount                = planWithdrawDetail.Amount,
                                AmountOC              = planWithdrawDetail.AmountOC,
                                BudgetChapterCode     = planWithdrawDetail.BudgetChapterCode,
                                BudgetDetailItemCode  = planWithdrawDetail.BudgetDetailItemCode,
                                BudgetItemCode        = planWithdrawDetail.BudgetItemCode,
                                BudgetKindItemCode    = planWithdrawDetail.BudgetKindItemCode,
                                BudgetSourceId        = planWithdrawDetail.BudgetSourceId,
                                BudgetSubItemCode     = planWithdrawDetail.BudgetSubItemCode,
                                BudgetSubKindItemCode = planWithdrawDetail.BudgetSubKindItemCode,
                                CreditAccount         = planWithdrawDetail.CreditAccount,
                                Description           = planWithdrawDetail.Description,
                                FundStructureId       = planWithdrawDetail.FundStructureId,
                                //       TaxAmount = planWithdrawDetail.TaxAmount,
                                JournalMemo  = planWithdrawEntity.JournalMemo,
                                ProjectId    = planWithdrawDetail.ProjectId,
                                PostedDate   = planWithdrawEntity.PostedDate,
                                CurrencyCode = planWithdrawEntity.CurrencyCode,
                                ExchangeRate = planWithdrawEntity.ExchangeRate,
                            };
                            planWithdrawResponse.Message = OriginalGeneralLedgerDao.InsertOriginalGeneralLedger(originalGeneralLedgerEntity);
                            if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                            {
                                planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                                return(planWithdrawResponse);
                            }

                            #endregion
                            //// Insert into JourentryAcocunt
                            //jourentryAccount = journalEntryAccounts[i];
                            //jourentryAccount.RefId = planWithdrawDetail.RefId;
                            //jourentryAccount.RefDetailId = planWithdrawDetail.RefDetailId;
                            //#region " jourentryAccount: thay đổi thông tin theo đối tượng Master"
                            //int accountingObjectType = planWithdrawEntity.AccountingObjectType == null ? 0 : int.Parse(planWithdrawEntity.AccountingObjectType.ToString());
                            //switch (accountingObjectType)
                            //{
                            //    case 0:
                            //        jourentryAccount.VendorId = planWithdrawEntity.VendorId;
                            //        break;
                            //    case 1:
                            //        jourentryAccount.EmployeeId = planWithdrawEntity.EmployeeId;
                            //        break;
                            //    case 2:
                            //        jourentryAccount.AccountingObjectId = planWithdrawEntity.AccountingObjectId;
                            //        break;
                            //    case 3:
                            //        jourentryAccount.CustomerId = planWithdrawEntity.CustomerId;
                            //        break;
                            //}
                            //#endregion


                            //if (!jourentryAccount.Validate())
                            //{
                            //    foreach (string error in jourentryAccount.ValidationErrors)
                            //        planWithdrawResponse.Message += error + Environment.NewLine;
                            //    planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            //    return planWithdrawResponse;
                            //}
                            //JournalEntryAccountDao.InsertDoubleJournalEntryAccount(jourentryAccount);
                            //i = i + 1;
                        }


                        //foreach (var buPlanDrawDetail in planWithdrawEntity.BUPlanWithdrawDetails)
                        //{
                        //    var generalLedgerEntity = new GeneralLedgerEntity
                        //    {
                        //        RefType = planWithdrawEntity.RefType,
                        //        RefNo = planWithdrawEntity.RefNo,
                        //        // AccountingObjectId = buPlanReceiptEntity.AccountingObjectId,
                        //        //BankId = buPlanReceiptEntity.BankId,
                        //        // BudgetChapterCode = buPlanReceiptDetail.BudgetChapterCode,
                        //        ProjectId = buPlanDrawDetail.ProjectId,
                        //        BudgetSourceId = buPlanDrawDetail.BudgetSourceId,
                        //        Description = buPlanDrawDetail.Description,
                        //        RefDetailId = buPlanDrawDetail.RefDetailId,
                        //        ExchangeRate = planWithdrawEntity.ExchangeRate,
                        //        // ActivityId = buPlanReceiptDetail.ActivityId,
                        //        BudgetSubKindItemCode = buPlanDrawDetail.BudgetSubKindItemCode,
                        //        CurrencyCode = planWithdrawEntity.CurrencyCode,
                        //        BudgetKindItemCode = buPlanDrawDetail.BudgetKindItemCode,
                        //        RefId = planWithdrawEntity.RefId,
                        //        PostedDate = planWithdrawEntity.PostedDate,
                        //        //MethodDistributeId = buPlanReceiptDetail.MethodDistributeId,
                        //        //OrgRefNo = buPlanReceiptDetail.OrgRefNo,
                        //        // OrgRefDate = buPlanReceiptDetail.OrgRefDate,
                        //        BudgetItemCode = buPlanDrawDetail.BudgetItemCode,
                        //        ListItemId = buPlanDrawDetail.ListItemId,
                        //        BudgetSubItemCode = buPlanDrawDetail.BudgetSubItemCode,
                        //        BudgetDetailItemCode = buPlanDrawDetail.BudgetDetailItemCode,
                        //        //CashWithDrawTypeId = buPlanReceiptDetail.CashWithDrawTypeId,
                        //        //AccountNumber = buPlanDrawDetail.DebitAccount,
                        //        CorrespondingAccountNumber = buPlanDrawDetail.CreditAccount,
                        //        DebitAmount = buPlanDrawDetail.Amount,
                        //        DebitAmountOC = buPlanDrawDetail.AmountOC,
                        //        CreditAmount = 0,
                        //        CreditAmountOC = 0,
                        //        FundStructureId = buPlanDrawDetail.FundStructureId,
                        //        GeneralLedgerId = Guid.NewGuid().ToString(),
                        //        JournalMemo = planWithdrawEntity.JournalMemo,
                        //        RefDate = planWithdrawEntity.RefDate
                        //    };
                        //    planWithdrawResponse.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);
                        //    if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                        //    {
                        //        planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                        //        return planWithdrawResponse;
                        //    }

                        ////insert lan 2
                        //generalLedgerEntity.GeneralLedgerId = Guid.NewGuid().ToString();
                        //generalLedgerEntity.AccountNumber = buPlanDrawDetail.CreditAccount;
                        ////generalLedgerEntity.CorrespondingAccountNumber = buPlanDrawDetail.DebitAccount;
                        //generalLedgerEntity.DebitAmount = 0;
                        //generalLedgerEntity.DebitAmountOC = 0;
                        //generalLedgerEntity.CreditAmount = buPlanDrawDetail.Amount;
                        //generalLedgerEntity.CreditAmountOC = buPlanDrawDetail.AmountOC;
                        //planWithdrawResponse.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);

                        if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                        {
                            planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            return(planWithdrawResponse);
                        }
                        //}

                        planWithdrawResponse.RefId = planWithdrawEntity.RefId;
                    }
                    if (planWithdrawResponse.Message != null)
                    {
                        planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(planWithdrawResponse);
                    }
                    scope.Complete();
                }

                return(planWithdrawResponse);
            }
            catch (Exception ex)
            {
                planWithdrawResponse.Message = ex.Message;
                return(planWithdrawResponse);
            }
        }
예제 #5
0
        public BUPlanAdjustmentResponse InsertBuPlanAdjustment(BUPlanAdjustmentEntity buPlanAdjustment)
        {
            var buPlanAdjustmentResponse = new BUPlanAdjustmentResponse {
                Acknowledge = AcknowledgeType.Success
            };


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

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

                    buPlanAdjustment.RefId           = Guid.NewGuid().ToString();
                    buPlanAdjustmentResponse.Message = BuPlanAdjustmentDao.InsertBUPlanAdjustment(buPlanAdjustment);

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

                    foreach (var buPlanAdjustmentDetail in buPlanAdjustment.BUPlanAdjustmentDetails)
                    {
                        buPlanAdjustmentDetail.RefId       = buPlanAdjustment.RefId;
                        buPlanAdjustmentDetail.RefDetailId = Guid.NewGuid().ToString();
                        if (!buPlanAdjustmentDetail.Validate())
                        {
                            foreach (var error in buPlanAdjustmentDetail.ValidationErrors)
                            {
                                buPlanAdjustmentResponse.Message += error + Environment.NewLine;
                            }
                            buPlanAdjustmentResponse.Acknowledge = AcknowledgeType.Failure;
                            return(buPlanAdjustmentResponse);
                        }
                        buPlanAdjustmentResponse.Message =
                            BuPlanAdjustmentDetailDao.InsertBUPlanAdjustmentDetail(buPlanAdjustmentDetail);
                        if (!string.IsNullOrEmpty(buPlanAdjustmentResponse.Message))
                        {
                            buPlanAdjustmentResponse.Acknowledge = AcknowledgeType.Failure;
                            return(buPlanAdjustmentResponse);
                        }

                        #region Insert to AccountBalance

                        InsertAccountBalance(buPlanAdjustment, buPlanAdjustmentDetail);

                        #endregion

                        #region Insert into GeneralLedger
                        if (buPlanAdjustmentDetail.DebitAccount != null)
                        {
                            var generalLedgerEntity = new GeneralLedgerEntity
                            {
                                RefType               = buPlanAdjustment.RefType,
                                RefNo                 = buPlanAdjustment.RefNo,
                                ProjectId             = buPlanAdjustmentDetail.ProjectId,
                                ActivityId            = buPlanAdjustmentDetail.ActivityId,
                                BudgetSourceId        = buPlanAdjustmentDetail.BudgetSourceId,
                                Description           = buPlanAdjustmentDetail.ItemName,
                                RefDetailId           = buPlanAdjustmentDetail.RefDetailId,
                                ExchangeRate          = buPlanAdjustment.ExchangeRate,
                                BudgetSubKindItemCode = buPlanAdjustmentDetail.BudgetSubKindItemCode,
                                CurrencyCode          = buPlanAdjustment.CurrencyCode,
                                BudgetKindItemCode    = buPlanAdjustmentDetail.BudgetKindItemCode,
                                RefId                 = buPlanAdjustment.RefId,
                                PostedDate            = buPlanAdjustment.PostedDate,
                                BudgetItemCode        = buPlanAdjustmentDetail.BudgetItemCode,
                                ListItemId            = buPlanAdjustmentDetail.ListItemId,
                                BudgetSubItemCode     = buPlanAdjustmentDetail.BudgetSubItemCode,
                                BudgetDetailItemCode  = buPlanAdjustmentDetail.BudgetDetailItemCode,
                                AccountNumber         = buPlanAdjustmentDetail.DebitAccount,
                                DebitAmount           = (buPlanAdjustmentDetail.DebitAccount == null ? 0 : buPlanAdjustmentDetail.AdjustmentAmount) / (buPlanAdjustment.ExchangeRate == null || buPlanAdjustment.ExchangeRate == 0 ? 1 : buPlanAdjustment.ExchangeRate),
                                DebitAmountOC         = buPlanAdjustmentDetail.DebitAccount == null ? 0 : buPlanAdjustmentDetail.AdjustmentAmount,
                                CreditAmount          = 0,
                                CreditAmountOC        = 0,
                                FundStructureId       = buPlanAdjustmentDetail.FundStructureId,
                                GeneralLedgerId       = Guid.NewGuid().ToString(),
                                JournalMemo           = buPlanAdjustment.JournalMemo,
                                RefDate               = buPlanAdjustment.RefDate,
                                SortOrder             = buPlanAdjustmentDetail.SortOrder,
                                CashWithDrawTypeId    = 28,
                                ContractId            = buPlanAdjustmentDetail.ContractId,
                                CapitalPlanId         = buPlanAdjustmentDetail.CapitalPlanId,
                                BudgetChapterCode     = buPlanAdjustmentDetail.BudgetChapterCode
                            };

                            buPlanAdjustmentResponse.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);

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

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

                        #endregion
                    }

                    if (buPlanAdjustmentResponse.Message != null)
                    {
                        buPlanAdjustmentResponse.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(buPlanAdjustmentResponse);
                    }
                    buPlanAdjustmentResponse.RefId = buPlanAdjustment.RefId;
                    scope.Complete();
                }

                return(buPlanAdjustmentResponse);
            }
        }
예제 #6
0
        /// <summary>
        /// Inserts the ca planWithdraw.
        /// </summary>
        /// <param name="planWithdrawEntity">The planWithdraw entity.</param>
        /// <returns>BUPlanWithdrawResponse.</returns>
        public BUPlanWithdrawResponse InsertBUPlanWithdraw(BUPlanWithdrawEntity planWithdrawEntity)
        {
            var planWithdrawResponse = new BUPlanWithdrawResponse {
                Acknowledge = AcknowledgeType.Success
            };

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

                using (var scope = new TransactionScope())
                {
                    if (planWithdrawEntity != null)
                    {
                        //check ma trung
                        var planWithdrawEntityExisted = BUPlanWithdrawDao.GetBUPlanWithdrawByRefNoRefType(planWithdrawEntity.RefNo.Trim(), planWithdrawEntity.RefType, planWithdrawEntity.PostedDate);
                        if (planWithdrawEntityExisted != null && planWithdrawEntityExisted.PostedDate.Year == planWithdrawEntity.PostedDate.Year)
                        {
                            planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            planWithdrawResponse.Message     = @"Số chứng từ '" + planWithdrawEntity.RefNo + @"' đã tồn tại!";
                            return(planWithdrawResponse);
                        }

                        planWithdrawEntity.RefId     = Guid.NewGuid().ToString();
                        planWithdrawResponse.Message = BUPlanWithdrawDao.InsertBUPlanWithdraw(planWithdrawEntity);

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

                        foreach (var planWithdrawDetail in planWithdrawEntity.BUPlanWithdrawDetails)
                        {
                            planWithdrawDetail.RefId       = planWithdrawEntity.RefId;
                            planWithdrawDetail.RefDetailId = Guid.NewGuid().ToString();
                            if (!planWithdrawDetail.Validate())
                            {
                                foreach (var error in planWithdrawDetail.ValidationErrors)
                                {
                                    planWithdrawResponse.Message += error + Environment.NewLine;
                                }
                                planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                                return(planWithdrawResponse);
                            }
                            planWithdrawResponse.Message = BUPlanWithdrawDetailDao.InsertBUPlanWithdrawDetail(planWithdrawDetail);
                            if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                            {
                                planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                                return(planWithdrawResponse);
                            }

                            #region Insert OriginalGeneralLedger
                            var originalGeneralLedgerEntity = new OriginalGeneralLedgerEntity
                            {
                                OriginalGeneralLedgerId = Guid.NewGuid().ToString(),
                                RefType               = planWithdrawEntity.RefType,
                                RefId                 = planWithdrawEntity.RefId,
                                RefDetailId           = planWithdrawDetail.RefDetailId,
                                OrgRefDate            = planWithdrawDetail.OrgRefDate,
                                OrgRefNo              = planWithdrawDetail.OrgRefNo,
                                RefDate               = planWithdrawEntity.RefDate,
                                RefNo                 = planWithdrawEntity.RefNo,
                                Amount                = planWithdrawDetail.Amount,
                                AmountOC              = planWithdrawDetail.AmountOC,
                                BudgetChapterCode     = planWithdrawDetail.BudgetChapterCode,
                                BudgetDetailItemCode  = planWithdrawDetail.BudgetDetailItemCode,
                                BudgetItemCode        = planWithdrawDetail.BudgetItemCode,
                                BudgetKindItemCode    = planWithdrawDetail.BudgetKindItemCode,
                                BudgetSourceId        = planWithdrawDetail.BudgetSourceId,
                                BudgetSubItemCode     = planWithdrawDetail.BudgetSubItemCode,
                                BudgetSubKindItemCode = planWithdrawDetail.BudgetSubKindItemCode,
                                CreditAccount         = planWithdrawDetail.CreditAccount,
                                Description           = planWithdrawDetail.Description,
                                FundStructureId       = planWithdrawDetail.FundStructureId,
                                //       TaxAmount = planWithdrawDetail.TaxAmount,
                                JournalMemo  = planWithdrawEntity.JournalMemo,
                                ProjectId    = planWithdrawDetail.ProjectId,
                                PostedDate   = planWithdrawEntity.PostedDate,
                                CurrencyCode = planWithdrawEntity.CurrencyCode,
                                ExchangeRate = planWithdrawEntity.ExchangeRate,
                            };
                            planWithdrawResponse.Message = OriginalGeneralLedgerDao.InsertOriginalGeneralLedger(originalGeneralLedgerEntity);
                            if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                            {
                                planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                                return(planWithdrawResponse);
                            }

                            #endregion


                            //// insert bang JourentryAccount
                            //var jourentryAccount = journalEntryAccounts[i];
                            //jourentryAccount.RefId = planWithdrawDetail.RefId;
                            //jourentryAccount.RefDetailId = iBUPlanWithdrawDetailId;
                            //#region " jourentryAccount: thay đổi thông tin theo đối tượng Master"
                            //int accountingObjectType = planWithdrawEntity.AccountingObjectType == null ? 0 : int.Parse(planWithdrawEntity.AccountingObjectType.ToString());
                            //switch (accountingObjectType)
                            //{
                            //    case 0:
                            //        jourentryAccount.VendorId = planWithdrawEntity.VendorId;
                            //        break;
                            //    case 1:
                            //        jourentryAccount.EmployeeId = planWithdrawEntity.EmployeeId;
                            //        break;
                            //    case 2:
                            //        jourentryAccount.AccountingObjectId = planWithdrawEntity.AccountingObjectId;
                            //        break;
                            //    case 3:
                            //        jourentryAccount.CustomerId = planWithdrawEntity.CustomerId;
                            //        break;
                            //}

                            ////LinhMC bổ sung trường hợp người dùng chọn đối tượng khác ở phần chi tiết mà không chọn ở phần thông tin chung.
                            //if (jourentryAccount.AccountingObjectId == null)
                            //{
                            //    jourentryAccount.AccountingObjectId = planWithdrawDetail.AccountingObjectId;
                            //}
                            //#endregion

                            //if (!jourentryAccount.Validate())
                            //{
                            //    foreach (string error in jourentryAccount.ValidationErrors)
                            //        planWithdrawResponse.Message += error + Environment.NewLine;
                            //    planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                            //    return planWithdrawResponse;
                            //}
                            //JournalEntryAccountDao.InsertDoubleJournalEntryAccount(jourentryAccount);
                            //i = i + 1;
                        }

                        //foreach (var buPlanDrawDetail in planWithdrawEntity.BUPlanWithdrawDetails)
                        //{
                        //    var generalLedgerEntity = new GeneralLedgerEntity
                        //    {
                        //        RefType = planWithdrawEntity.RefType,
                        //        RefNo = planWithdrawEntity.RefNo,
                        //        // AccountingObjectId = buPlanReceiptEntity.AccountingObjectId,
                        //        //BankId = buPlanReceiptEntity.BankId,
                        //        // BudgetChapterCode = buPlanReceiptDetail.BudgetChapterCode,
                        //        ProjectId = buPlanDrawDetail.ProjectId,
                        //        BudgetSourceId = buPlanDrawDetail.BudgetSourceId,
                        //        Description = buPlanDrawDetail.Description,
                        //        RefDetailId = buPlanDrawDetail.RefDetailId,
                        //        ExchangeRate = planWithdrawEntity.ExchangeRate,
                        //        // ActivityId = buPlanReceiptDetail.ActivityId,
                        //        BudgetSubKindItemCode = buPlanDrawDetail.BudgetSubKindItemCode,
                        //        CurrencyCode = planWithdrawEntity.CurrencyCode,
                        //        BudgetKindItemCode = buPlanDrawDetail.BudgetKindItemCode,
                        //        RefId = planWithdrawEntity.RefId,
                        //        PostedDate = planWithdrawEntity.PostedDate,
                        //        //MethodDistributeId = buPlanReceiptDetail.MethodDistributeId,
                        //        //OrgRefNo = buPlanReceiptDetail.OrgRefNo,
                        //        // OrgRefDate = buPlanReceiptDetail.OrgRefDate,
                        //        BudgetItemCode = buPlanDrawDetail.BudgetItemCode,
                        //        ListItemId = buPlanDrawDetail.ListItemId,
                        //        BudgetSubItemCode = buPlanDrawDetail.BudgetSubItemCode,
                        //        BudgetDetailItemCode = buPlanDrawDetail.BudgetDetailItemCode,
                        //        //CashWithDrawTypeId = buPlanReceiptDetail.CashWithDrawTypeId,
                        //        //AccountNumber = buPlanDrawDetail.DebitAccount,
                        //        CorrespondingAccountNumber = buPlanDrawDetail.CreditAccount,
                        //        DebitAmount = buPlanDrawDetail.Amount,
                        //        DebitAmountOC = buPlanDrawDetail.AmountOC,
                        //        CreditAmount = 0,
                        //        CreditAmountOC = 0,
                        //        FundStructureId = buPlanDrawDetail.FundStructureId,
                        //        GeneralLedgerId = Guid.NewGuid().ToString(),
                        //        JournalMemo = planWithdrawEntity.JournalMemo,
                        //        RefDate = planWithdrawEntity.RefDate
                        //    };
                        //    planWithdrawResponse.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);
                        //    if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                        //    {
                        //        planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                        //        return planWithdrawResponse;
                        //    }

                        //    //insert lan 2
                        //    generalLedgerEntity.GeneralLedgerId = Guid.NewGuid().ToString();
                        //     generalLedgerEntity.AccountNumber = buPlanDrawDetail.CreditAccount;
                        //    //generalLedgerEntity.CorrespondingAccountNumber = buPlanDrawDetail.DebitAccount;
                        //    generalLedgerEntity.DebitAmount = 0;
                        //    generalLedgerEntity.DebitAmountOC = 0;
                        //    generalLedgerEntity.CreditAmount = buPlanDrawDetail.Amount;
                        //    generalLedgerEntity.CreditAmountOC = buPlanDrawDetail.AmountOC;
                        //    planWithdrawResponse.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);

                        //    if (!string.IsNullOrEmpty(planWithdrawResponse.Message))
                        //    {
                        //        planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                        //        return planWithdrawResponse;
                        //    }
                        //}



                        planWithdrawResponse.RefId = planWithdrawEntity.RefId;
                        // Kiểm tra đã tồn tại trong bảng Account Balance
                        //foreach (var accountBalanceEntity in accountBalances)
                        //{
                        //    var obAccoutBalanceExit = AccountBalanceDao.GetExitsAccountBalance(accountBalanceEntity);
                        //    if (obAccoutBalanceExit != null)
                        //    {
                        //        // cập nhật bên TK nợ
                        //        if (accountBalanceEntity.MovementCreditAmountOC == 0)
                        //        {
                        //            obAccoutBalanceExit.ExchangeRate = accountBalanceEntity.ExchangeRate;
                        //            obAccoutBalanceExit.MovementDebitAmountExchange =
                        //                obAccoutBalanceExit.MovementDebitAmountExchange +
                        //                accountBalanceEntity.MovementDebitAmountExchange;
                        //            obAccoutBalanceExit.MovementDebitAmountOC =
                        //                obAccoutBalanceExit.MovementDebitAmountOC +
                        //                accountBalanceEntity.MovementDebitAmountOC;
                        //            AccountBalanceDao.UpdateAccountBalance(obAccoutBalanceExit);
                        //        }
                        //        else
                        //        {
                        //            obAccoutBalanceExit.ExchangeRate = accountBalanceEntity.ExchangeRate;
                        //            obAccoutBalanceExit.MovementCreditAmountExchange =
                        //                obAccoutBalanceExit.MovementCreditAmountExchange +
                        //                accountBalanceEntity.MovementCreditAmountExchange;
                        //            obAccoutBalanceExit.MovementCreditAmountOC =
                        //                obAccoutBalanceExit.MovementCreditAmountOC +
                        //                accountBalanceEntity.MovementCreditAmountOC;
                        //            AccountBalanceDao.UpdateAccountBalance(obAccoutBalanceExit);
                        //        }
                        //    }
                        //    else
                        //    {
                        //        AccountBalanceDao.InsertAccountBalance(accountBalanceEntity);
                        //    }
                        //}
                        //var autoNumber = AutoNumberDao.GetAutoNumberByRefType(planWithdrawEntity.RefType);
                        //autoNumber.Value += 1;
                        //if (planWithdrawEntity.RefType != 600)//Khong cap nhat khi la chung tu luong
                        //{
                        //    planWithdrawResponse.Message = AutoNumberDao.UpdateAutoNumber(autoNumber);
                        //}
                    }

                    if (planWithdrawResponse.Message != null)
                    {
                        planWithdrawResponse.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(planWithdrawResponse);
                    }
                    scope.Complete();
                }
                return(planWithdrawResponse);
            }
            catch (Exception ex)
            {
                planWithdrawResponse.Message = ex.Message;
                return(planWithdrawResponse);
            }
        }
        /// <summary>
        /// Updates the ba deposit.
        /// </summary>
        /// <param name="suTransferEntity">The su transfer entity.</param>
        /// <returns></returns>
        public SUTransferResponse UpdateSUTransfer(SUTransferEntity suTransferEntity)
        {
            var response = new SUTransferResponse {
                Acknowledge = AcknowledgeType.Success
            };

            try
            {
                if (!suTransferEntity.Validate())
                {
                    foreach (var error in suTransferEntity.ValidationErrors)
                    {
                        response.Message += error + Environment.NewLine;
                    }
                    response.Acknowledge = AcknowledgeType.Failure;
                    return(response);
                }
                using (var scope = new TransactionScope())
                {
                    var suTransfer = SUTransferDao.GetSUTransfer(suTransferEntity.RefNo.Trim(), suTransferEntity.PostedDate);
                    if (suTransfer != null && suTransfer.PostedDate.Year == suTransferEntity.PostedDate.Year)
                    {
                        if (suTransfer.RefId != suTransferEntity.RefId)
                        {
                            response.Acknowledge = AcknowledgeType.Failure;
                            response.Message     = @"Số chứng từ " + suTransferEntity.RefNo + @" đã tồn tại !";
                            return(response);
                        }
                    }

                    response.Message = SUTransferDao.UpdateSUTransfer(suTransferEntity);
                    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(suTransferEntity);
                    if (response.Message != null)
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        scope.Dispose();
                        return(response);
                    }

                    #endregion

                    #region Delete detail and insert detail

                    // Xóa bảng SUTransferDetail
                    response.Message = SUTransferDetailDao.DeleteSUTransferDetailByRefId(suTransferEntity.RefId);
                    if (!string.IsNullOrEmpty(response.Message))
                    {
                        response.Acknowledge = AcknowledgeType.Failure;
                        return(response);
                    }

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

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

                    if (suTransferEntity.SUTransferDetails != null)
                    {
                        foreach (var suTransferDetail in suTransferEntity.SUTransferDetails)
                        {
                            if (suTransferEntity.RefType == (int)BuCA.Enum.RefType.SUTransfer)
                            {
                                AutoMapper(GetUnitsInDepartment(suTransferDetail.InventoryItemId, suTransferDetail.FromDepartmentId, suTransferDetail.Quantity, suTransferDetail.Description), response);
                                if (response.Acknowledge == AcknowledgeType.Failure)
                                {
                                    return(response);
                                }
                            }

                            suTransferDetail.RefDetailId = Guid.NewGuid().ToString();
                            suTransferDetail.RefId       = suTransferEntity.RefId;
                            response.Message             = SUTransferDetailDao.InsertSUTransferDetail(suTransferDetail);
                            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(suTransferEntity, suTransferDetail);
                            if (response.Message != null)
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                scope.Dispose();
                                return(response);
                            }

                            #endregion

                            #region Insert OriginalGeneralLedger
                            var originalGeneralLedgerEntity = new OriginalGeneralLedgerEntity
                            {
                                OriginalGeneralLedgerId = Guid.NewGuid().ToString(),
                                RefType           = suTransferEntity.RefType,
                                RefId             = suTransferEntity.RefId,
                                RefDetailId       = suTransferDetail.RefDetailId,
                                RefDate           = suTransferEntity.RefDate,
                                RefNo             = suTransferEntity.RefNo,
                                Amount            = suTransferDetail.Amount,
                                BudgetChapterCode = suTransferDetail.BudgetChapterCode,
                                CreditAccount     = suTransferDetail.CreditAccount,
                                DebitAccount      = suTransferDetail.DebitAccount,
                                Description       = suTransferDetail.Description,
                                JournalMemo       = suTransferEntity.JournalMemo,
                                SortOrder         = suTransferDetail.SortOrder,
                                PostedDate        = suTransferEntity.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

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

                                //insert lan 2
                                supplyLedgerEntity.SupplyLedgerId    = Guid.NewGuid().ToString();
                                supplyLedgerEntity.AccountNumber     = suTransferDetail.CreditAccount;
                                supplyLedgerEntity.DepartmentId      = suTransferDetail.ToDepartmentId;
                                supplyLedgerEntity.IncrementQuantity = suTransferDetail.Quantity;
                                supplyLedgerEntity.DecrementQuantity = 0;
                                supplyLedgerEntity.IncrementAmount   = suTransferDetail.Amount;
                                supplyLedgerEntity.DecrementAmount   = 0;

                                response.Message = SupplyLedgerDao.InsertSupplyLedger(supplyLedgerEntity);
                                if (!string.IsNullOrEmpty(response.Message))
                                {
                                    response.Acknowledge = AcknowledgeType.Failure;
                                    return(response);
                                }
                            }
                            #endregion
                        }
                    }

                    #endregion

                    scope.Complete();
                }
                response.RefId = suTransferEntity.RefId;
                return(response);
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                return(response);
            }
        }
예제 #8
0
        /// <summary>
        ///     Inserts the ba deposit.
        /// </summary>
        /// <param name="fAIncrementDecrementEntity">The b a deposit entity.</param>
        /// <returns></returns>
        public FAIncrementDecrementResponse InsertFAIncrementDecrement(
            FAIncrementDecrementEntity fAIncrementDecrementEntity)
        {
            var response = new FAIncrementDecrementResponse {
                Acknowledge = AcknowledgeType.Success
            };

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

                    #region insert FAIncrementDecrementDetails

                    //Tạo biến để xác định tài sản đã có không insert vào FixedAssetLedger entity thành dòng mới
                    var fixedAssetId = "";
                    if (fAIncrementDecrementEntity.FAIncrementDecrementDetails != null)
                    {
                        foreach (var fAIncrementDecrementDetailEntity in fAIncrementDecrementEntity.FAIncrementDecrementDetails)
                        {
                            fAIncrementDecrementDetailEntity.RefDetailId = Guid.NewGuid().ToString();
                            fAIncrementDecrementDetailEntity.RefId       = fAIncrementDecrementEntity.RefId;
                            response.Message =
                                FAIncrementDecrementDetailDao.InsertFAIncrementDecrementDetail(fAIncrementDecrementDetailEntity);
                            if (!string.IsNullOrEmpty(response.Message))
                            {
                                response.Acknowledge = AcknowledgeType.Failure;
                                return(response);
                            }

                            #region insert bang GeneralLedger

                            if (fAIncrementDecrementDetailEntity.DebitAccount != null && fAIncrementDecrementDetailEntity.CreditAccount != null)
                            {
                                var generalLedgerEntity = new GeneralLedgerEntity
                                {
                                    RefType                    = fAIncrementDecrementEntity.RefType,
                                    RefNo                      = fAIncrementDecrementEntity.RefNo,
                                    ProjectId                  = fAIncrementDecrementDetailEntity.ProjectId,
                                    BudgetSourceId             = fAIncrementDecrementDetailEntity.BudgetSourceId,
                                    Description                = fAIncrementDecrementDetailEntity.Description,
                                    RefDetailId                = fAIncrementDecrementDetailEntity.RefDetailId,
                                    ExchangeRate               = 1,
                                    BudgetSubKindItemCode      = fAIncrementDecrementDetailEntity.BudgetSubKindItemCode,
                                    CurrencyCode               = "VND",
                                    BudgetKindItemCode         = fAIncrementDecrementDetailEntity.BudgetKindItemCode,
                                    RefId                      = fAIncrementDecrementEntity.RefId,
                                    PostedDate                 = fAIncrementDecrementEntity.PostedDate,
                                    BudgetItemCode             = fAIncrementDecrementDetailEntity.BudgetItemCode,
                                    ListItemId                 = fAIncrementDecrementDetailEntity.ListItemId,
                                    BudgetSubItemCode          = fAIncrementDecrementDetailEntity.BudgetSubItemCode,
                                    BudgetDetailItemCode       = fAIncrementDecrementDetailEntity.BudgetDetailItemCode,
                                    AccountNumber              = fAIncrementDecrementDetailEntity.DebitAccount,
                                    CorrespondingAccountNumber = fAIncrementDecrementDetailEntity.CreditAccount,
                                    DebitAmount                =
                                        fAIncrementDecrementDetailEntity.DebitAccount == null
                                            ? 0
                                            : fAIncrementDecrementDetailEntity.Amount,
                                    DebitAmountOC =
                                        fAIncrementDecrementDetailEntity.DebitAccount == null
                                            ? 0
                                            : fAIncrementDecrementDetailEntity.Amount,
                                    CreditAmount       = 0,
                                    CreditAmountOC     = 0,
                                    FundStructureId    = fAIncrementDecrementDetailEntity.FundStructureId,
                                    GeneralLedgerId    = Guid.NewGuid().ToString(),
                                    JournalMemo        = fAIncrementDecrementEntity.JournalMemo,
                                    RefDate            = fAIncrementDecrementEntity.RefDate,
                                    SortOrder          = fAIncrementDecrementDetailEntity.SortOrder,
                                    AccountingObjectId = fAIncrementDecrementDetailEntity.AccountingObjectId,
                                };
                                response.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);
                                if (!string.IsNullOrEmpty(response.Message))
                                {
                                    response.Acknowledge = AcknowledgeType.Failure;
                                    return(response);
                                }
                                generalLedgerEntity.GeneralLedgerId            = Guid.NewGuid().ToString();
                                generalLedgerEntity.AccountNumber              = fAIncrementDecrementDetailEntity.CreditAccount;
                                generalLedgerEntity.CorrespondingAccountNumber = fAIncrementDecrementDetailEntity.DebitAccount;
                                generalLedgerEntity.DebitAmount    = 0;
                                generalLedgerEntity.DebitAmountOC  = 0;
                                generalLedgerEntity.CreditAmount   = fAIncrementDecrementDetailEntity.Amount;
                                generalLedgerEntity.CreditAmountOC = fAIncrementDecrementDetailEntity.Amount;
                                response.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);
                                if (!string.IsNullOrEmpty(response.Message))
                                {
                                    response.Acknowledge = AcknowledgeType.Failure;
                                    return(response);
                                }
                            }
                            else
                            {
                                var generalLedgerEntity = new GeneralLedgerEntity
                                {
                                    RefType               = fAIncrementDecrementEntity.RefType,
                                    RefNo                 = fAIncrementDecrementEntity.RefNo,
                                    ProjectId             = fAIncrementDecrementDetailEntity.ProjectId,
                                    BudgetSourceId        = fAIncrementDecrementDetailEntity.BudgetSourceId,
                                    Description           = fAIncrementDecrementDetailEntity.Description,
                                    RefDetailId           = fAIncrementDecrementDetailEntity.RefDetailId,
                                    ExchangeRate          = 1,
                                    BudgetSubKindItemCode = fAIncrementDecrementDetailEntity.BudgetSubKindItemCode,
                                    CurrencyCode          = "VND",
                                    BudgetKindItemCode    = fAIncrementDecrementDetailEntity.BudgetKindItemCode,
                                    RefId                 = fAIncrementDecrementEntity.RefId,
                                    PostedDate            = fAIncrementDecrementEntity.PostedDate,
                                    BudgetItemCode        = fAIncrementDecrementDetailEntity.BudgetItemCode,
                                    ListItemId            = fAIncrementDecrementDetailEntity.ListItemId,
                                    BudgetSubItemCode     = fAIncrementDecrementDetailEntity.BudgetSubItemCode,
                                    BudgetDetailItemCode  = fAIncrementDecrementDetailEntity.BudgetDetailItemCode,
                                    AccountNumber         = fAIncrementDecrementDetailEntity.DebitAccount ?? fAIncrementDecrementDetailEntity.CreditAccount,
                                    DebitAmount           =
                                        fAIncrementDecrementDetailEntity.DebitAccount == null
                                            ? 0
                                            : fAIncrementDecrementDetailEntity.Amount,
                                    DebitAmountOC =
                                        fAIncrementDecrementDetailEntity.DebitAccount == null
                                            ? 0
                                            : fAIncrementDecrementDetailEntity.Amount,
                                    CreditAmount    = 0,
                                    CreditAmountOC  = 0,
                                    FundStructureId = fAIncrementDecrementDetailEntity.FundStructureId,
                                    GeneralLedgerId = Guid.NewGuid().ToString(),
                                    JournalMemo     = fAIncrementDecrementEntity.JournalMemo,
                                    RefDate         = fAIncrementDecrementEntity.RefDate,
                                    SortOrder       = fAIncrementDecrementDetailEntity.SortOrder
                                };
                                response.Message = GeneralLedgerDao.InsertGeneralLedger(generalLedgerEntity);
                                if (!string.IsNullOrEmpty(response.Message))
                                {
                                    response.Acknowledge = AcknowledgeType.Failure;
                                    return(response);
                                }
                            }

                            #endregion

                            #region Insert FixedAssetLedger
                            // insert bang GeneralLedger
                            //1 tài sản lưu thành 1 dòng, số tiền = tổng số tiền của các dòng cùng tài sản
                            if (fAIncrementDecrementDetailEntity.FixedAssetId != null)
                            {
                                var totalAmount = (from f in fAIncrementDecrementEntity.FAIncrementDecrementDetails where f.FixedAssetId == fAIncrementDecrementDetailEntity.FixedAssetId select f).ToList();
                                if (fixedAssetId != fAIncrementDecrementDetailEntity.FixedAssetId)
                                {
                                    //get fixedAssetInfo
                                    var fixedAssetEntity = FixedAssetDao.GetFixedAssetById(fAIncrementDecrementDetailEntity.FixedAssetId);

                                    var fixedAssetLedgerEntity = new FixedAssetLedgerEntity
                                    {
                                        FixedAssetLedgerId = Guid.NewGuid().ToString(),
                                        RefId                    = fAIncrementDecrementEntity.RefId,
                                        RefType                  = fAIncrementDecrementEntity.RefType,
                                        RefNo                    = fAIncrementDecrementEntity.RefNo,
                                        RefDate                  = fAIncrementDecrementEntity.RefDate,
                                        PostedDate               = fAIncrementDecrementEntity.PostedDate,
                                        FixedAssetId             = fAIncrementDecrementDetailEntity.FixedAssetId,
                                        DepartmentId             = fAIncrementDecrementDetailEntity.DepartmentId,
                                        LifeTime                 = fixedAssetEntity.LifeTime,
                                        AnnualDepreciationRate   = fixedAssetEntity.DepreciationRate,
                                        AnnualDepreciationAmount = fixedAssetEntity.PeriodDepreciationAmount,
                                        OrgPriceAccount          = null,
                                        OrgPriceDebitAmount      = fAIncrementDecrementDetailEntity.DebitAccount.StartsWith("211") || fAIncrementDecrementDetailEntity.DebitAccount.StartsWith("213") ? totalAmount.Select(c => c.Amount).Sum() : 0,
                                        OrgPriceCreditAmount     = fAIncrementDecrementDetailEntity.DebitAccount.StartsWith("211") || fAIncrementDecrementDetailEntity.DebitAccount.StartsWith("213") ? 0 : totalAmount.Select(c => c.Amount).Sum(),
                                        DepreciationAccount      = null,
                                        DepreciationDebitAmount  = fAIncrementDecrementDetailEntity.DebitAccount.StartsWith("214") ? fixedAssetEntity.AccumDepreciationAmount + fixedAssetEntity.AccumDevaluationAmount : 0,
                                        DepreciationCreditAmount = fAIncrementDecrementDetailEntity.DebitAccount.StartsWith("214") ? 0 : fixedAssetEntity.AccumDepreciationAmount + fixedAssetEntity.AccumDevaluationAmount,
                                        CapitalAccount           = fixedAssetEntity.CapitalAccount,
                                        CapitalDebitAmount       = 0,
                                        CapitalCreditAmount      = 0,
                                        Quantity                 = (decimal)fAIncrementDecrementDetailEntity.Quantity,// fixedAssetEntity.Quantity,
                                        //Quantity = fixedAssetEntity.Quantity,
                                        JournalMemo             = fAIncrementDecrementEntity.JournalMemo,
                                        Description             = fAIncrementDecrementDetailEntity.Description,
                                        RemainingLifeTime       = fixedAssetEntity.RemainingLifeTime,
                                        EndYear                 = fixedAssetEntity.EndYear,
                                        DevaluationAmount       = fixedAssetEntity.DevaluationAmount,
                                        DevaluationPeriod       = fixedAssetEntity.DevaluationPeriod,
                                        EndDevaluationDate      = fixedAssetEntity.EndDevaluationDate == new DateTime(0001, 01, 01) ? fixedAssetEntity.DevaluationDate.AddMonths((int)fixedAssetEntity.DevaluationLifeTime) : fixedAssetEntity.EndDevaluationDate,
                                        PeriodDevaluationAmount = fixedAssetEntity.PeriodDevaluationAmount
                                    };

                                    response.Message = FixedAssetLedgerDao.InsertFixedAssetLedger(fixedAssetLedgerEntity);
                                    if (!string.IsNullOrEmpty(response.Message))
                                    {
                                        response.Acknowledge = AcknowledgeType.Failure;
                                        return(response);
                                    }
                                    fixedAssetId = fAIncrementDecrementDetailEntity.FixedAssetId;
                                }
                            }
                            #endregion

                            #region Insert OriginalGeneralLedger
                            var originalGeneralLedgerEntity = new OriginalGeneralLedgerEntity
                            {
                                OriginalGeneralLedgerId = Guid.NewGuid().ToString(),
                                RefType               = fAIncrementDecrementEntity.RefType,
                                RefId                 = fAIncrementDecrementEntity.RefId,
                                JournalMemo           = fAIncrementDecrementEntity.JournalMemo,
                                RefDate               = fAIncrementDecrementEntity.RefDate,
                                RefNo                 = fAIncrementDecrementEntity.RefNo,
                                RefDetailId           = fAIncrementDecrementDetailEntity.RefDetailId,
                                OrgRefDate            = null,
                                OrgRefNo              = null,
                                AccountingObjectId    = fAIncrementDecrementDetailEntity.AccountingObjectId,
                                ActivityId            = fAIncrementDecrementDetailEntity.ActivityId,
                                Amount                = fAIncrementDecrementDetailEntity.Amount,
                                AmountOC              = fAIncrementDecrementDetailEntity.Amount,
                                Approved              = true,
                                BankId                = null,
                                BudgetChapterCode     = fAIncrementDecrementDetailEntity.BudgetChapterCode,
                                BudgetDetailItemCode  = fAIncrementDecrementDetailEntity.BudgetDetailItemCode,
                                BudgetItemCode        = fAIncrementDecrementDetailEntity.BudgetItemCode,
                                BudgetKindItemCode    = fAIncrementDecrementDetailEntity.BudgetKindItemCode,
                                BudgetSourceId        = fAIncrementDecrementDetailEntity.BudgetSourceId,
                                BudgetSubItemCode     = fAIncrementDecrementDetailEntity.BudgetSubItemCode,
                                BudgetSubKindItemCode = fAIncrementDecrementDetailEntity.BudgetSubKindItemCode,
                                CashWithDrawTypeId    = fAIncrementDecrementDetailEntity.CashWithDrawTypeId,
                                CreditAccount         = fAIncrementDecrementDetailEntity.CreditAccount,
                                DebitAccount          = fAIncrementDecrementDetailEntity.DebitAccount,
                                Description           = fAIncrementDecrementDetailEntity.Description,
                                FundStructureId       = fAIncrementDecrementDetailEntity.FundStructureId,
                                ProjectActivityId     = fAIncrementDecrementDetailEntity.ProjectActivityId,
                                MethodDistributeId    = fAIncrementDecrementDetailEntity.MethodDistributeId,
                                ProjectId             = fAIncrementDecrementDetailEntity.ProjectId,
                                ToBankId              = null,
                                SortOrder             = fAIncrementDecrementDetailEntity.SortOrder,
                                PostedDate            = fAIncrementDecrementEntity.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
                        }
                    }

                    #endregion

                    scope.Complete();
                }
                response.RefId = fAIncrementDecrementEntity.RefId;
                return(response);
            }
            catch (Exception ex)
            {
                response.Message = ex.Message;
                return(response);
            }
        }
예제 #9
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);
            }
        }
        /// <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);
            }
        }