public bool UpdateVoucherDetail(VoucherDetail voucherDetailInfo) { return(this.VoucherDetailDAO.UpdateVoucherDetail(voucherDetailInfo)); }
public async Task <ServiceResponseModel <string> > Receate(LedgerModel editLedgerModel) { ServiceResponseModel <string> serviceResponse = new ServiceResponseModel <string>(); int itemSr = 0; decimal mtot = 0; List <Ledger> ledgersRec = new List <Ledger>(); Ledger ledger = null; string sqlQuery = null; List <VoucherMaster> voucherMasters; _logger.LogInformation(String.Format("Ledger Recreation started for CompCode:{0} AccYear{1}", editLedgerModel.CompCode, editLedgerModel.AccYear)); try { _logger.LogInformation("Account Master balance resetting"); sqlQuery = String.Format("Update AccountMaster SET CurDr = 0 ,CurCr = 0, Closing = 0 WHERE CompCode='{0}' AND AccYear='{1}'", editLedgerModel.CompCode, editLedgerModel.AccYear); _context.Database.ExecuteSqlRaw(sqlQuery); _logger.LogInformation("Account Master SET CurDr=0, CurCr=0 resetting"); sqlQuery = String.Format("Update AccountMaster SET Closing = Opening WHERE CompCode='{0}' AND AccYear='{1}'", editLedgerModel.CompCode, editLedgerModel.AccYear); _context.Database.ExecuteSqlRaw(sqlQuery); var openingClosing = _context.AccountMasters .Where(a => a.CompCode == editLedgerModel.CompCode && a.AccYear == editLedgerModel.AccYear) .GroupBy(x => true) .Select(a => new { sumOpening = a.Sum(y => y.Opening), sumClosing = a.Sum(y => y.Closing) }) .FirstOrDefault(); _logger.LogInformation(string.Format("Before Opening:{0} Closing:{1}", openingClosing.sumOpening, openingClosing.sumClosing)); _logger.LogInformation("Removeing ledger records in progress"); IEnumerable <Ledger> ledgerRecords = await UnitOfWork.Ledgers.FindAsync(t => t.CompCode == editLedgerModel.CompCode && t.AccYear == editLedgerModel.AccYear); UnitOfWork.Ledgers.RemoveRange(ledgerRecords); await UnitOfWork.Complete(); _logger.LogInformation("Removed ledger records"); voucherMasters = await _context.VoucherMasters .Include(vm => vm.VoucherDetails) .Include(vm => vm.Ledgers) .Include(vm => vm.Sgst) .Include(vm => vm.Cgst) .Where(t => t.CompCode == editLedgerModel.CompCode && t.AccYear == editLedgerModel.AccYear) .OrderBy(vm => vm.VouNo) .ToListAsync(); foreach (VoucherMaster voucherMaster in voucherMasters) { _logger.LogInformation(String.Format("Ledger Recreation for VouNo:{0} Date{1} started.", voucherMaster.VouNo, voucherMaster.VouDate)); mtot = 0; itemSr = 1; mtot = voucherMaster.DrCr == "1" ? mtot - (decimal)voucherMaster.VouAmount : mtot + (decimal)voucherMaster.VouAmount; VoucherDetail vouDetailmaster = voucherMaster.VoucherDetails.First(); //First ledger record ledger = new Ledger { CompCode = voucherMaster.CompCode, AccYear = voucherMaster.AccYear, VouNo = voucherMaster.VouNo, VouDate = voucherMaster.VouDate, TrxType = voucherMaster.TrxType, BilChq = voucherMaster.BilChq, ItemSr = itemSr, AccountId = voucherMaster.AccountId, DrCr = voucherMaster.DrCr, Amount = voucherMaster.VouAmount, CorrAccountId = vouDetailmaster.AccountId, VouDetail = vouDetailmaster.VouDetail, VoucherMaster = voucherMaster }; ledgersRec.Add(ledger); foreach (VoucherDetail voucherDetail in voucherMaster.VoucherDetails) { itemSr = itemSr + 1; mtot = voucherDetail.DrCr == "1" ? mtot - (decimal)voucherDetail.Amount : mtot + (decimal)voucherDetail.Amount; ledger = new Ledger { CompCode = voucherMaster.CompCode, AccYear = voucherMaster.AccYear, VouNo = voucherMaster.VouNo, VouDate = voucherMaster.VouDate, TrxType = voucherMaster.TrxType, BilChq = voucherMaster.BilChq, ItemSr = itemSr, AccountId = voucherDetail.AccountId, DrCr = voucherDetail.DrCr, Amount = voucherDetail.Amount, CorrAccountId = voucherMaster.AccountId, VouDetail = voucherDetail.VouDetail, VoucherMaster = voucherMaster }; ledgersRec.Add(ledger); } await UnitOfWork.Ledgers.AddRangeAsync(ledgersRec); if (mtot != 0) { _logger.LogWarning(string.Format("{0}{1}", "Debit/Credit total mismatch for voucher :", voucherMaster.VouNo)); } foreach (Ledger ledgerTmp in ledgersRec) { AccountMaster accountMaster = await UnitOfWork.AccountMasters.SingleOrDefaultAsync(a => a.CompCode == ledgerTmp.CompCode && a.AccYear == ledgerTmp.AccYear && a.AccountId == ledgerTmp.AccountId); if (ledgerTmp.DrCr == "1") { accountMaster.CurDr = accountMaster.CurDr.GetValueOrDefault() + ledgerTmp.Amount; accountMaster.Closing = accountMaster.Opening.GetValueOrDefault() - accountMaster.CurDr.GetValueOrDefault() + accountMaster.CurCr.GetValueOrDefault(); } else { accountMaster.CurCr = accountMaster.CurCr.GetValueOrDefault() + ledgerTmp.Amount; accountMaster.Closing = accountMaster.Opening.GetValueOrDefault() - accountMaster.CurDr.GetValueOrDefault() + accountMaster.CurCr.GetValueOrDefault(); } UnitOfWork.AccountMasters.Update(accountMaster); } _logger.LogInformation(String.Format("Ledger Recreation for VouNo:{0} Date{1} Completed.", voucherMaster.VouNo, voucherMaster.VouDate)); } await UnitOfWork.Complete(); openingClosing = _context.AccountMasters .Where(a => a.CompCode == editLedgerModel.CompCode && a.AccYear == editLedgerModel.AccYear) .GroupBy(x => true) .Select(a => new { sumOpening = a.Sum(y => y.Opening), sumClosing = a.Sum(y => y.Closing) }) .FirstOrDefault(); _logger.LogInformation(string.Format("After Opening:{0} Closing:{1}", openingClosing.sumOpening, openingClosing.sumClosing)); serviceResponse.Data = string.Format("After Opening:{0} Closing:{1}", openingClosing.sumOpening, openingClosing.sumClosing); } catch (Exception ex) { _logger.LogError(ex.StackTrace); serviceResponse.Success = false; serviceResponse.Message = ex.Message; } return(serviceResponse); }
public bool InsertVouchersDetail(VoucherDetail voucherDetailInfo) { return(this.VoucherDetailDAO.InsertVouchersDetail(voucherDetailInfo)); }
public IActionResult AddVoucherDetail([FromBody] VoucherDetail model) { VouDetail_repo.Add(model); return(new OkObjectResult(new { VoucherDetailID = model.VoucherDetailId })); }
private void LuuKCCK() { #region kết chuyển loại hình Thương Mại, Sản Xuất int checkSuccess = 0; //insert vouchers và voucherDetail foreach (KetChuyenValue item in KetChuyenData) { if (item.Amount == 0) { continue; } #region set value to Insert Voucher Voucher voucher = new Voucher { VoucherAmount = item.Amount, VoucherDescription = this.KetChuyenContent_textEdit.EditValue.ToString(), VouchersTypeID = "KC", VoucherDate = this.KetChuyen_bsFromToDateEdit.ToDate.Date, CompanyID = CommonInfo.CompanyInfo.CompanyID, Status = ModifyMode.Insert }; #endregion set value to Insert Voucher List <VoucherDetail> VoucherDetailData = new List <VoucherDetail>(); VoucherDetail voucherDetail = new VoucherDetail { CompanyID = CommonInfo.CompanyInfo.CompanyID, AccountID = item.KetChuyenCreditAccountID, AccountDetailID = item.KetChuyenCreditAccountDetailID, Amount = item.Amount }; string result = ""; if (item.KetChuyenCreditAccountID != "911") { //voucherDetail.CustomerID = item.CustomerID; voucherDetail.CustomerID = item.CustomerID?.ToString(); voucherDetail.QLID = item.QLID?.ToString(); string CustomerID = ""; if (!string.IsNullOrEmpty(item.CustomerID)) { CustomerID = item.CustomerID; } result = CheckDKInsertKC(false, true, item.KetChuyenCreditAccountID, item.KetChuyenCreditAccountDetailID, CustomerID, this.KetChuyen_bsFromToDateEdit.ToDate.Date, item.Amount); } else { result = CheckDKInsertKC(false, true, item.KetChuyenCreditAccountID, item.KetChuyenCreditAccountDetailID, item.CustomerID, this.KetChuyen_bsFromToDateEdit.ToDate.Date, item.Amount); } voucherDetail.NV = "C"; voucherDetail.Status = ModifyMode.Insert; VoucherDetailData.Add(voucherDetail); int checkbreak = 0;; if (result != "1") { MessageBoxHelper.ShowInfoMessage(result); checkbreak = 1; } voucherDetail = new VoucherDetail { CompanyID = CommonInfo.CompanyInfo.CompanyID, AccountID = item.KetChuyenDebitAccountID, AccountDetailID = item.KetChuyenDebitAccountDetailID, Amount = item.Amount }; if (item.KetChuyenDebitAccountID != "911") { //voucherDetail.CustomerID = item.CustomerID; voucherDetail.CustomerID = item.CustomerID?.ToString(); voucherDetail.QLID = item.QLID?.ToString(); string CustomerID = ""; if (!string.IsNullOrEmpty(item.CustomerID)) { CustomerID = item.CustomerID; } result = CheckDKInsertKC(true, false, item.KetChuyenDebitAccountID, item.KetChuyenDebitAccountDetailID, CustomerID, this.KetChuyen_bsFromToDateEdit.ToDate.Date, item.Amount); } else { result = CheckDKInsertKC(true, false, item.KetChuyenDebitAccountID, item.KetChuyenDebitAccountDetailID, item.CustomerID, this.KetChuyen_bsFromToDateEdit.ToDate.Date, item.Amount); } voucherDetail.NV = "N"; voucherDetail.Status = ModifyMode.Insert; VoucherDetailData.Add(voucherDetail); if (result != "1") { MessageBoxHelper.ShowInfoMessage(result); checkbreak = 1; } if (checkbreak == 1) { continue; } List <VoucherDetail> saveData = VoucherDetailData; if (saveData?.Count > 0) { VoucherDetailController controller = new VoucherDetailController(); if (controller.SaveVoucher_Detail(saveData, voucher)) { // MessageBoxHelper.ShowInfoMessage(BSMessage.BSM000001); } else { checkSuccess = 1; MessageBoxHelper.ShowInfoMessage(BSMessage.BSM000002); } } } Load_KetChuyen_GridView(KetChuyen_bsFromToDateEdit.FromDate.Date, this.KetChuyen_bsFromToDateEdit.ToDate.Date, CommonInfo.CompanyInfo.CompanyID); if (checkSuccess == 0) { MessageBoxHelper.ShowInfoMessage(BSMessage.BSM000001); } #endregion kết chuyển loại hình Thương Mại, Sản Xuất }
/// <inheritdoc /> public string PresentVoucherDetail(VoucherDetail detail) => throw new NotImplementedException();
public StmtDetailQuery(string marker) { Filter = new VoucherDetail { Remark = marker }; }
public void Post([FromBody] VoucherDetail value) { ctx.VoucherDetails.Add(value); ctx.SaveChanges(); }
public RegisteringDetailQuery(VoucherDetail filter) => Filter = filter;
/// <inheritdoc /> public string PresentVoucherDetail(VoucherDetail detail) => PresentVoucherDetails(new[] { detail });
private static void SeedDatabase(VouchersDBContext context) { //To Create the Code First DB go to Package Manager Console -> //PackageManagerConsole: //Install-Package Microsoft.EntityFrameworkCore.Tools -Pre //Add-Migration MigrationName //Update-Database if (context.BalanceAccounts.FirstOrDefault() == null) { var a1 = new BalanceAccount { Name = "Unclassified", Expense = true }; var a2 = new BalanceAccount { Name = "Car Maintenance", Expense = true }; var a3 = new BalanceAccount { Name = "Development", Expense = false }; var a4 = new BalanceAccount { Name = "Consulting", Expense = false }; var a5 = new BalanceAccount { Name = "Training", Expense = false }; var a6 = new BalanceAccount { Name = "Software", Expense = true }; var a7 = new BalanceAccount { Name = "Hosting & Internet", Expense = true }; context.BalanceAccounts.AddRange(a1, a2, a3, a4, a5, a6, a7); context.SaveChanges(); var v1 = new Voucher { Date = DateTime.Now.AddDays(-2), Amount = 800, Text = "Reiser-ST", Paid = false, Expense = false, Remark = true }; var v2 = new Voucher { Date = DateTime.Now.AddDays(-2), Amount = 65, Text = "BP Tankstelle", Paid = false, Expense = true, Remark = true }; var v3 = new Voucher { Date = DateTime.Now.AddDays(-2), Amount = 56, Text = "Amazon", Paid = false, Expense = true }; var v4 = new Voucher { Date = DateTime.Now.AddDays(-3), Amount = 100, Text = "Media Markt", Paid = true, Expense = true }; context.Vouchers.AddRange(v1, v2, v3, v4); context.SaveChanges(); var vd1 = new VoucherDetail { VoucherID = v4.ID, Text = "Ladekabel", Amount = 100, Account = a1 }; var vd7 = new VoucherDetail { VoucherID = v3.ID, Text = "Game of Thrones, Season 6", Amount = 29, Account = a6 }; var vd2 = new VoucherDetail { VoucherID = v3.ID, Text = "USB Stick", Amount = 11, Account = a1 }; var vd3 = new VoucherDetail { VoucherID = v3.ID, Text = "DVI Kabel", Amount = 45, Account = a1 }; var vd4 = new VoucherDetail { VoucherID = v2.ID, Text = "Diesel", Amount = 45, Account = a2 }; var vd6 = new VoucherDetail { VoucherID = v2.ID, Text = "Reifenwechsel", Amount = 20, Account = a2 }; var vd5 = new VoucherDetail { VoucherID = v1.ID, Text = "Remote Support", Amount = 800, Account = a4 }; context.VoucherDetails.AddRange(vd1, vd2, vd3, vd4, vd5, vd6, vd7); context.SaveChanges(); } ; }
public bool IsNonCash(VoucherDetail detail) { m_CashQuery ??= CashAccounts.Select(sa => ParsingF.PureDetailQuery(sa.Query, new() { User = User, Today = DateTime.UtcNow.Date })).ToList(); return(detail.User == User && !m_CashQuery.Any(detail.IsMatch)); }
public IActionResult SaveDebitVoucher(DebitVoucherViewModel debitVoucherViewModel) { if (!string.IsNullOrEmpty(debitVoucherViewModel.VoucherNumber)) { var tempVoucherHead = _work.TempVoucherHead.Find(x => x.VoucherNumber == debitVoucherViewModel.VoucherNumber).FirstOrDefault(); if (tempVoucherHead != null) { VoucherHead voucherHead = new VoucherHead { VoucherId = tempVoucherHead.VoucherId, VoucherNumber = debitVoucherViewModel.VoucherNumber, EntryDate = Convert.ToDateTime(debitVoucherViewModel.Date), PaidTo = debitVoucherViewModel.PaidTo, PreparedBy = debitVoucherViewModel.PreparedBy, PreparedByUserId = debitVoucherViewModel.PreparedByUserId, ReceivedBy = debitVoucherViewModel.ReceivedBy, VoucherSaveState = VoucherSaveStates.Saved }; _work.VoucherHead.Add(voucherHead); // === voucher number === // VoucherNumber voucherNumber = _work.VoucherNumber.Find(x => x.Number == debitVoucherViewModel.VoucherNumber).FirstOrDefault(); if (voucherNumber.State != VoucherSaveStates.Saved) { voucherNumber.State = VoucherSaveStates.Saved; _work.VoucherNumber.Update(voucherNumber); } // === === === // foreach (var item in debitVoucherViewModel.DebitVoucherItems) { VoucherDetail voucherDetail = new VoucherDetail { VoucherNumber = debitVoucherViewModel.VoucherNumber, Particulars = item.Particulars, VoucherHeadId = voucherHead.Id, AccountSubLedgerId = item.LedgerId == 0 ? (int?)null : item.LedgerId, Ref = item.Ref, DebitAmount = item.DebitAmount, CreditAmount = item.CreditAmount }; if (item.VoucherItemType == "Dr") { voucherDetail.TransactionTypes = TransactionTypes.Debit; } else if (item.VoucherItemType == "Cr") { voucherDetail.TransactionTypes = TransactionTypes.Credit; } _work.VoucherDetail.Add(voucherDetail); } bool isSaved = _work.Save() > 0; _sql.DeleteVoucherHead(debitVoucherViewModel.VoucherNumber); //CHANGE ISDELETED & ISACTIVE VALUE _sql.DeleteVoucherDetail(debitVoucherViewModel.VoucherNumber); //DELETE TEMP VOUCHER DETAILS if (isSaved) { return(Json(true)); } return(Json(false)); } } return(Json(false)); }
public async Task <ApiResponse> Handle(EditVoucherDetailCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { request.TimezoneOffset = request.TimezoneOffset > 0 ? request.TimezoneOffset * -1 : Math.Abs(request.TimezoneOffset.Value); DateTime filterVoucherDate = request.VoucherDate.AddMinutes(request.TimezoneOffset.Value); Task <List <CurrencyDetails> > currencyListTask = _dbContext.CurrencyDetails.Where(x => x.IsDeleted == false).ToListAsync(); Task <List <ExchangeRateDetail> > exchangeRatePresentTask = _dbContext.ExchangeRateDetail.Where(x => x.Date.Date == request.VoucherDate.Date && x.IsDeleted == false).ToListAsync(); Task <VoucherDetail> voucherDetailTask = _dbContext.VoucherDetail.FirstOrDefaultAsync(c => c.VoucherNo == request.VoucherNo); Task <OfficeDetail> officeDetailTask = _dbContext.OfficeDetail.FirstOrDefaultAsync(x => x.IsDeleted == false && x.OfficeId == request.OfficeId); List <CurrencyDetails> currencyDetailsList = await currencyListTask; var currencyList = currencyDetailsList.Select(x => x.CurrencyId).ToList(); List <ExchangeRateDetail> exchangeRatePresent = await exchangeRatePresentTask; if (CheckExchangeRateIsPresent(currencyList, exchangeRatePresent)) { VoucherDetail voucherdetailInfo = await voucherDetailTask; string currencyCode = currencyDetailsList.FirstOrDefault(x => x.CurrencyId == request.CurrencyId).CurrencyCode; int voucherCount = await _dbContext.VoucherDetail.Where(x => x.VoucherDate.Month == filterVoucherDate.Month && x.OfficeId == request.OfficeId && x.VoucherDate.Year == filterVoucherDate.Year).CountAsync(); if (voucherdetailInfo != null) { OfficeDetail officeDetail = await officeDetailTask; if (request.VoucherDate.Date != voucherdetailInfo.VoucherDate.Date || request.OfficeId != voucherdetailInfo.OfficeId || voucherdetailInfo.CurrencyCode != request.CurrencyCode) { string referenceNo = AccountingUtility.GenerateVoucherReferenceCode(filterVoucherDate, voucherCount, currencyCode, officeDetail.OfficeCode); if (!string.IsNullOrEmpty(referenceNo)) { //check if same sequence number is already present in the voucher table int sameVoucherReferenceNoCount = 0; do { sameVoucherReferenceNoCount = await _dbContext.VoucherDetail.Where(x => x.ReferenceNo == referenceNo).CountAsync(); if (sameVoucherReferenceNoCount == 0) { voucherdetailInfo.ReferenceNo = referenceNo; } else { var refNo = referenceNo.Split('-'); int count = Convert.ToInt32(refNo[3]); referenceNo = AccountingUtility.GenerateVoucherReferenceCode(request.VoucherDate, count, currencyCode, officeDetail.OfficeCode); } }while (sameVoucherReferenceNoCount != 0); } } else if (request.CurrencyId != voucherdetailInfo.CurrencyId) { if (string.IsNullOrEmpty(voucherdetailInfo.ReferenceNo)) { var refNo = voucherdetailInfo.ReferenceNo.Split('-'); refNo[1] = currencyCode; voucherdetailInfo.ReferenceNo = refNo[0] + "-" + refNo[1] + "-" + refNo[2] + "-" + refNo[3] + "-" + refNo[4]; } else { throw new Exception("Reference No cannot be set"); } } voucherdetailInfo.CurrencyId = request.CurrencyId; voucherdetailInfo.OfficeId = request.OfficeId; voucherdetailInfo.VoucherDate = request.VoucherDate; voucherdetailInfo.ChequeNo = request.ChequeNo; voucherdetailInfo.JournalCode = request.JournalCode; voucherdetailInfo.FinancialYearId = request.FinancialYearId; voucherdetailInfo.VoucherTypeId = request.VoucherTypeId; voucherdetailInfo.Description = request.Description; voucherdetailInfo.ModifiedById = request.ModifiedById; voucherdetailInfo.ModifiedDate = request.ModifiedDate; _dbContext.VoucherDetail.Update(voucherdetailInfo); await _dbContext.SaveChangesAsync(); if (await _dbContext.VoucherTransactions.AnyAsync(x => x.VoucherNo == voucherdetailInfo.VoucherNo)) { var voucherTransactions = await _dbContext.VoucherTransactions.Where(x => x.VoucherNo == voucherdetailInfo.VoucherNo).ToListAsync(); foreach (var transaction in voucherTransactions) { transaction.TransactionDate = voucherdetailInfo.VoucherDate; } _dbContext.VoucherTransactions.UpdateRange(voucherTransactions); await _dbContext.SaveChangesAsync(); } response.StatusCode = StaticResource.successStatusCode; response.Message = StaticResource.SuccessText; } else { response.StatusCode = StaticResource.failStatusCode; response.Message = StaticResource.VoucherNotPresent; } } else { response.StatusCode = StaticResource.failStatusCode; response.Message = StaticResource.ExchagneRateNotDefined; } } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = ex.Message; } return(response); }
public static bool IsMatch(this VoucherDetail voucherDetail, IQueryCompunded <IDetailQueryAtom> query) => IsMatch(query, q => IsMatch(voucherDetail, q.Filter, q.Dir));
public Voucher Save(VoucherViewModel vmVoucher) { Voucher voucher = new Voucher(); if (vmVoucher.VId > 0) { //修改凭证 voucher = this.GetMyVoucher(vmVoucher.VId); if (voucher == null) { return(null); } voucher.CertificateWord = _ledger.CertificateWords.Where(cw => cw.CwId == vmVoucher.CwId).FirstOrDefault(); voucher.CertWordSN = vmVoucher.CertWordSN; voucher.VoucherYear = vmVoucher.VoucherDate.Year; voucher.VoucherMonth = vmVoucher.VoucherDate.Month; voucher.VoucherDate = vmVoucher.VoucherDate; voucher.PaymentTerms = string.Format("{0}{1:D2}", voucher.VoucherYear, voucher.VoucherMonth); voucher.InvoiceCount = vmVoucher.InvoiceCount; foreach (VoucherDetailViewModel vd in vmVoucher.VoucherDetails) { VoucherDetail vDetail = new VoucherDetail(); if (vd.VdId > 0) { vDetail = voucher.VoucherDetails.Where(d => d.VdId == vd.VdId).FirstOrDefault(); } else { voucher.VoucherDetails.Add(vDetail); } vDetail.Abstract = vd.Abstract; vDetail.Account = _account.GetAccount(vd.AccId.Value); vDetail.AccountCode = vDetail.Account.AccCode; vDetail.AccountName = vDetail.Account.AccName; vDetail.Quantity = vd.Quantity; vDetail.Price = vd.Price; if (vDetail.Account.Direction == "借") { vDetail.Debit = vd.Debit; vDetail.Credit = vd.Credit * (-1); } else { vDetail.Debit = vd.Debit * (-1); vDetail.Credit = vd.Credit; } vDetail.InitialBalance = vDetail.Account.InitialBalance; vDetail.InitialQuantity = vDetail.Account.InitialQuantity; vDetail.YtdBeginBalance = vDetail.Account.YtdBeginBalance; vDetail.YtdBeginBalanceQuantity = vDetail.Account.YtdBeginBalanceQuantity; if (vDetail.Account.Direction == "借") { vDetail.YtdDebit = vDetail.Account.YtdDebit + vDetail.Debit; vDetail.YtdDebitQuantity = vDetail.Account.YtdDebitQuantity + vDetail.Quantity; } else { vDetail.YtdCredit = vDetail.Account.YtdCredit + vDetail.Credit; vDetail.YtdCreditQuantity = vDetail.Account.YtdCreditQuantity + vDetail.Quantity; } } } else { //新增凭证 voucher.CertificateWord = _ledger.CertificateWords.Where(cw => cw.CwId == vmVoucher.CwId).FirstOrDefault(); voucher.CertWordSN = vmVoucher.CertWordSN; voucher.VoucherYear = vmVoucher.VoucherDate.Year; voucher.VoucherMonth = vmVoucher.VoucherDate.Month; voucher.VoucherDate = vmVoucher.VoucherDate; voucher.PaymentTerms = string.Format("{0}{1:D2}", voucher.VoucherYear, voucher.VoucherMonth); voucher.InvoiceCount = vmVoucher.InvoiceCount; voucher.State = VoucherState.PaddingAudit; voucher.AccountBook = _acctBook.GetCurrentBook(); voucher.Creator = ((ClaimsIdentity)_context.User.Identity).Claims.Where(c => c.Type == "name").FirstOrDefault().Value; voucher.CreateTime = DateTime.Now; voucher.VoucherDetails = new List <VoucherDetail>(); foreach (VoucherDetailViewModel vd in vmVoucher.VoucherDetails) { VoucherDetail vDetail = new VoucherDetail(); vDetail.Abstract = vd.Abstract; vDetail.Account = _account.GetAccount(vd.AccId.Value); vDetail.AccountCode = vDetail.Account.AccCode; vDetail.AccountName = vDetail.Account.AccName; vDetail.Quantity = vd.Quantity; vDetail.Price = vd.Price; //vDetail.Debit = vd.Debit; //vDetail.Credit = vd.Credit; if (vDetail.Account.Direction == "借") { vDetail.Debit = vd.Debit; vDetail.Credit = vd.Credit * (-1); } else { vDetail.Debit = vd.Debit * (-1); vDetail.Credit = vd.Credit; } vDetail.InitialBalance = vDetail.Account.InitialBalance; vDetail.InitialQuantity = vDetail.Account.InitialQuantity; vDetail.YtdBeginBalance = vDetail.Account.YtdBeginBalance; vDetail.YtdBeginBalanceQuantity = vDetail.Account.YtdBeginBalanceQuantity; if (vDetail.Account.Direction == "借") { vDetail.YtdDebit = vDetail.Account.YtdDebit + vDetail.Debit; vDetail.YtdDebitQuantity = vDetail.Account.YtdDebitQuantity + vDetail.Quantity; } else { vDetail.YtdCredit = vDetail.Account.YtdCredit + vDetail.Credit; vDetail.YtdCreditQuantity = vDetail.Account.YtdCreditQuantity + vDetail.Quantity; } voucher.VoucherDetails.Add(vDetail); } _ledger.Vouchers.Add(voucher); } if (_ledger.SaveChanges() > 0) { //科目统计数据 this.RecalculateAllAccount(); return(voucher); } return(null); }
/// <summary> /// 判断细目是否符合细目过滤器 /// </summary> /// <param name="voucherDetail">细目</param> /// <param name="filter">细目过滤器</param> /// <param name="dir">借贷方向</param> /// <returns>是否符合</returns> public static bool IsMatch(this VoucherDetail voucherDetail, VoucherDetail filter, int dir = 0) { if (filter == null) { return(true); } if (filter.Currency != null) { if (filter.Currency != voucherDetail.Currency) { return(false); } } if (filter.Title != null) { if (filter.Title != voucherDetail.Title) { return(false); } } if (filter.SubTitle != null) { if (filter.SubTitle == 00) { if (voucherDetail.SubTitle != null) { return(false); } } else if (filter.SubTitle != voucherDetail.SubTitle) { return(false); } } if (filter.Content != null) { if (filter.Content == string.Empty) { if (!string.IsNullOrEmpty(voucherDetail.Content)) { return(false); } } else if (filter.Content != voucherDetail.Content) { return(false); } } if (filter.Fund != null) { if (!voucherDetail.Fund.HasValue || !(filter.Fund.Value - voucherDetail.Fund.Value).IsZero()) { return(false); } } if (dir != 0) { if (!voucherDetail.Fund.HasValue || dir > 0 && voucherDetail.Fund < -VoucherDetail.Tolerance || dir < 0 && voucherDetail.Fund > +VoucherDetail.Tolerance) { return(false); } } if (filter.Remark != null) { if (filter.Remark == string.Empty) { if (!string.IsNullOrEmpty(voucherDetail.Remark)) { return(false); } } else if (filter.Remark != voucherDetail.Remark) { return(false); } } return(true); }
/// <inheritdoc /> public string PresentVoucherDetail(VoucherDetail detail) => PresentJson(detail).ToString(Formatting.Indented);
public void TheComparisonTest() { var rhs = new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 06, Content = "abc", Remark = "def", Fund = 123.45 }; Assert.Equal(0, DbSession.TheComparison(rhs, rhs)); Assert.Equal( -1, DbSession.TheComparison( new VoucherDetail { Currency = "USC", Title = 1235, SubTitle = 07, Content = "abd", Remark = "deg", Fund = 123.46 }, rhs)); Assert.Equal( +1, DbSession.TheComparison( new VoucherDetail { Currency = "USE", Title = 1233, SubTitle = 05, Content = "abb", Remark = "dee", Fund = 123.44 }, rhs)); Assert.Equal( -1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1233, SubTitle = 07, Content = "abd", Remark = "deg", Fund = 123.46 }, rhs)); Assert.Equal( +1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1235, SubTitle = 05, Content = "abb", Remark = "dee", Fund = 123.44 }, rhs)); Assert.Equal( -1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 05, Content = "abd", Remark = "deg", Fund = 123.46 }, rhs)); Assert.Equal( +1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 07, Content = "abb", Remark = "dee", Fund = 123.44 }, rhs)); Assert.Equal( -1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 06, Content = "abb", Remark = "deg", Fund = 123.46 }, rhs)); Assert.Equal( +1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 06, Content = "abd", Remark = "dee", Fund = 123.44 }, rhs)); Assert.Equal( -1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 06, Content = "abc", Remark = "dee", Fund = 123.46 }, rhs)); Assert.Equal( +1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 06, Content = "abc", Remark = "deg", Fund = 123.44 }, rhs)); Assert.Equal( -1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 06, Content = "abc", Remark = "def", Fund = 123.44 }, rhs)); Assert.Equal( +1, DbSession.TheComparison( new VoucherDetail { Currency = "USD", Title = 1234, SubTitle = 06, Content = "abc", Remark = "def", Fund = 123.46 }, rhs)); }
private void KetChuyenSumit_simpleButton_Click(object sender, EventArgs e) { #region kiểm tra dữ liệu có đang bị khóa sổ if (VoucherControl.CheckLockDBCompany(KetChuyen_bsFromToDateEdit.ToDate.Date, CommonInfo.CompanyInfo.CompanyID)) { //Dữ liệu đang nằm trong vùng khóa sổ MessageBoxHelper.ShowErrorMessage("Dữ liệu đang bị khóa sổ!\n"); return; } #endregion kiểm tra dữ liệu có đang bị khóa sổ //Thực hiện cho loại hình không phải tour, công trình if (CommonInfo.CompareCompanyType("DL") || CommonInfo.CompareCompanyType("XD") || CommonInfo.CompareCompanyType("SX")) { #region Kết chuyển loại hình Du lịch, Xây dựng // Load_KetChuyen_GridView(KetChuyen_bsFromToDateEdit.FromDate.Date, this.KetChuyen_bsFromToDateEdit.ToDate.Date, CommonInfo.CompanyInfo.CompanyID); string value = KetChuyenType_radioGroup.EditValue.ToString(); switch (value) { case "CK": //Lấy dữ liệu cuối kỳ LuuKCCK(); break; default: //Lưu kết chuyển Dang Dở, Thành Phẩm, Giá Vốn int statusKC = 0; #region Kết chuyển loại hình Du lịch, Xây dựng foreach (KetChuyenValue item in KetChuyenData) { if (item.Amount == 0) { continue; } #region set value to Insert Voucher Voucher voucher = new Voucher { VoucherAmount = item.Amount, VoucherDescription = this.KetChuyenContent_textEdit.EditValue.ToString(), VouchersTypeID = "KC", VoucherDate = this.KetChuyen_bsFromToDateEdit.ToDate.Date, CompanyID = CommonInfo.CompanyInfo.CompanyID, Status = ModifyMode.Insert }; #endregion set value to Insert Voucher //Setup value to voucherdetail List <VoucherDetail> VoucherDetailData = new List <VoucherDetail>(); VoucherDetail voucherDetail = new VoucherDetail { CompanyID = CommonInfo.CompanyInfo.CompanyID, AccountID = item.KetChuyenCreditAccountID, AccountDetailID = item.KetChuyenCreditAccountDetailID, CustomerID = item.CustomerID?.ToString(), QLID = item.QLID?.ToString(), Amount = item.Amount, NV = "C", Status = ModifyMode.Insert }; VoucherDetailData.Add(voucherDetail); voucherDetail = new VoucherDetail { CompanyID = CommonInfo.CompanyInfo.CompanyID, AccountID = item.KetChuyenDebitAccountID, AccountDetailID = item.KetChuyenDebitAccountDetailID, CustomerID = item.CustomerID?.ToString(), QLID = item.QLID?.ToString(), Amount = item.Amount, NV = "N", Status = ModifyMode.Insert }; VoucherDetailData.Add(voucherDetail); List <VoucherDetail> saveData = VoucherDetailData; if (saveData?.Count > 0) { VoucherDetailController controller = new VoucherDetailController(); if (controller.SaveVoucher_Detail(saveData, voucher)) { // MessageBoxHelper.ShowInfoMessage(BSMessage.BSM000001); } else { MessageBoxHelper.ShowInfoMessage(BSMessage.BSM000002); statusKC = 1; } } } Load_KetChuyen_GridView(KetChuyen_bsFromToDateEdit.FromDate.Date, this.KetChuyen_bsFromToDateEdit.ToDate.Date, CommonInfo.CompanyInfo.CompanyID); if (statusKC == 0) { MessageBoxHelper.ShowInfoMessage(BSMessage.BSM000001); } #endregion Kết chuyển loại hình Du lịch, Xây dựng break; } #endregion Kết chuyển loại hình Du lịch, Xây dựng } else { LuuKCCK(); } }
VoucherDetail ToVoucherDetail(XmlNode node, ref string errorString) { try { VoucherDetail voucher = null; if (node != null && !string.IsNullOrEmpty(node.InnerXml)) { voucher = new VoucherDetail(); voucher.ReturnString = node["ReturnString"].InnerText; voucher.AvailableVouchers = node["AvailableVouchers"].InnerText; voucher.TransactionDate = node["TransactionDate"].InnerText; return voucher; } } catch (Exception ex) { errorString = ex.Message; } return null; }
public async Task <ApiResponse> Handle(UnverifyPurchaseCommand request, CancellationToken cancellationToken) { ApiResponse response = new ApiResponse(); try { if (request != null) { var purchaseRecord = await _dbContext.StoreItemPurchases.FirstOrDefaultAsync(x => x.PurchaseId == request.PurchaseId); if (purchaseRecord != null) { _mapper.Map(request, purchaseRecord); if (!string.IsNullOrEmpty(request.ImageFileName)) { if (request.ImageFileName.Contains(",")) { string[] str = request.ImageFileName.Split(","); byte[] filepath = Convert.FromBase64String(str[1]); string ex = str[0].Split("/")[1].Split(";")[0]; string guidname = Guid.NewGuid().ToString(); string filename = guidname + "." + ex; var pathFile = Path.Combine(Directory.GetCurrentDirectory(), @"Documents/") + filename; File.WriteAllBytes(@"Documents/" + filename, filepath); purchaseRecord.ImageFileName = guidname; purchaseRecord.ImageFileType = "." + ex; } } if (request.InvoiceFileName != null && request.InvoiceFileName != "") { if (request.InvoiceFileName.Contains(",")) { string[] str = request.InvoiceFileName.Split(","); byte[] filepath = Convert.FromBase64String(str[1]); string ex = str[0].Split("/")[1].Split(";")[0]; string guidname = Guid.NewGuid().ToString(); string filename = guidname + "." + ex; var pathFile = Path.Combine(Directory.GetCurrentDirectory(), @"Documents/") + filename; File.WriteAllBytes(@"Documents/" + filename, filepath); purchaseRecord.InvoiceFileName = guidname; purchaseRecord.InvoiceFileType = "." + ex; } } purchaseRecord.IsDeleted = false; if (request.IsPurchaseVerified.HasValue && !request.IsPurchaseVerified.Value) { VoucherDetail voucherDetail = _dbContext.VoucherDetail.FirstOrDefault(x => x.IsDeleted == false && x.VoucherNo == request.VerifiedPurchaseVoucher); if (voucherDetail != null) { List <VoucherTransactions> voucherTransactionsList = await _dbContext.VoucherTransactions.Where(x => x.IsDeleted == false && x.VoucherNo == request.VerifiedPurchaseVoucher).ToListAsync(); var creditTransaction = voucherTransactionsList.FirstOrDefault(x => x.Debit == 0); var debitTransaction = voucherTransactionsList.FirstOrDefault(x => x.Credit == 0); List <VoucherTransactionsModel> transactions = new List <VoucherTransactionsModel>(); // Credit transactions.Add(new VoucherTransactionsModel { TransactionId = 0, VoucherNo = voucherDetail.VoucherNo, AccountNo = debitTransaction.ChartOfAccountNewId, Debit = 0, Credit = debitTransaction.Debit, Description = StaticResource.PurchaseVoucherCreated, IsDeleted = false }); // Debit transactions.Add(new VoucherTransactionsModel { TransactionId = 0, VoucherNo = voucherDetail.VoucherNo, AccountNo = creditTransaction.ChartOfAccountNewId, Debit = creditTransaction.Credit, Credit = 0, Description = StaticResource.PurchaseVoucherCreated, IsDeleted = false }); AddEditTransactionModel transactionVoucherDetail = new AddEditTransactionModel { VoucherNo = voucherDetail.VoucherNo, VoucherTransactions = transactions }; // StoreServices storeObj = new StoreServices(_dbContext); var responseTransaction = _iStoreServices.AddEditTransactionList(transactionVoucherDetail, request.CreatedById); if (responseTransaction.StatusCode == 200) { response.StatusCode = StaticResource.successStatusCode; response.Message = StaticResource.SuccessText; } else { throw new Exception(responseTransaction.Message); } response.StatusCode = StaticResource.successStatusCode; response.Message = "Success"; } else { throw new Exception(" Voucher Not Found on Verified Purchase"); } } else { await _dbContext.SaveChangesAsync(); } } else { response.StatusCode = StaticResource.failStatusCode; response.Message = "Record cannot be updated"; return(response); } } else { response.StatusCode = StaticResource.failStatusCode; response.Message = "request values are inappropriate"; return(response); } } catch (Exception ex) { response.StatusCode = StaticResource.failStatusCode; response.Message = StaticResource.SomethingWrong + ex.Message; return(response); } return(response); }