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
     };
 }
Exemple #8
0
 public void Post([FromBody] VoucherDetail value)
 {
     ctx.VoucherDetails.Add(value);
     ctx.SaveChanges();
 }
 public RegisteringDetailQuery(VoucherDetail filter) => Filter = filter;
Exemple #10
0
 /// <inheritdoc />
 public string PresentVoucherDetail(VoucherDetail detail) => PresentVoucherDetails(new[] { detail });
Exemple #11
0
        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);
        }
Exemple #15
0
 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);
        }
Exemple #17
0
        /// <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();
            }
        }
Exemple #21
0
 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;
 }
Exemple #22
0
        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);
        }