public async Task <IActionResult> Create(BankStatementViewModel BankStatementViewModel) { if (!ModelState.IsValid) { return(View(BankStatementViewModel)); } if (!await Import(BankStatementViewModel.FileUpload)) { ViewData["Erro"] = "A file with the same name already exists!"; return(View("create")); } var filename = BankStatementViewModel.FileUpload.FileName; var builder = _ioservice.ReadFile(filename); // transform var bank = new BankStatement(); var ofx = bank.Create(builder, bank.Id); await _bankStatementService.Save(ofx); ViewData["Message"] = "Send to Database"; return(View("create")); }
private void btnDebit_Click(object sender, EventArgs e) { if (txtDesc.Text == string.Empty || txtValue.Text == string.Empty || txtData.Text == string.Empty) { DialogResult resultado3 = MessageBox.Show("Preencha todos os campos ! ", "Erro !", MessageBoxButtons.OK, MessageBoxIcon.Error); if (resultado3 == DialogResult.OK) { Limpar(this); } } else { //Transformando o valor positivo em negativo txtSetValue.Text = lblNegative.Text + txtValue.Text; //Atribuindo as informações para a o banco BankStatement b = new BankStatement(Convert.ToDecimal(txtSetValue.Text), Convert.ToDateTime(txtData.Text), txtDesc.Text, txtNumAccount.Text); //Atribuindo o objeto ao BankStatement bkDao.DepositBankStatement(b); MessageBox.Show("Cadastrado !"); Limpar(this); lblNegative.Text = "-"; } }
private BankStatement ParseDatesAndBalances(BankStatement result, string item) { if (!foundBeginBalance && !foundBeginDate && beginningBalanceRegex.IsMatch(item)) { var matches = beginningBalanceRegex.Matches(item); if (matches.Count == 1 && matches[0].Groups.Count == 5) { result.StartDate = DateTime.Parse($"{matches[0].Groups[1].Value} {matches[0].Groups[2].Value}, {matches[0].Groups[3].Value}"); result.StartingBalance = decimal.Parse(matches[0].Groups[4].Value); foundBeginBalance = true; foundBeginDate = true; } } if (!foundEndingBalance && !foundEndingDate && endingBalanceRegex.IsMatch(item)) { var matches = endingBalanceRegex.Matches(item); if (matches.Count == 1 && matches[0].Groups.Count == 5) { result.EndDate = DateTime.Parse($"{matches[0].Groups[1].Value} {matches[0].Groups[2].Value}, {matches[0].Groups[3].Value}"); result.EndingBalance = decimal.Parse(matches[0].Groups[4].Value); } foundEndingBalance = true; foundEndingDate = true; } return(result); }
public async Task <IActionResult> FileUploadAsync() { try { IFormFileCollection files = HttpContext.Request.Form.Files; if (files.Count() == 0) { throw new Exception("Please attach the files."); } BankStatement importFile = await UploadArquivo(files); if (importFile == null) { throw new Exception("Error importing file."); } var bankStatement = _mapper.Map <BankStatementViewModel>(importFile); return(View("BankStatements", bankStatement)); } catch (Exception ex) { ViewData["MessageError"] = ex.Message; } return(View("Index")); }
public void ImportOperations_ClearingOperationsForUnclearedOperations_OperationsAddedToNewStatementAndRemovedFromOldAndStatusClearedAdded() { //Given var currentOperations = Enumerable.Range(1, 5) .Select(par => GetOperation(false, par.ToString(), par, par)); var currentStatement = new BankStatement(); currentStatement.Operations.AddRange(currentOperations); _statementsRepository.Setup(par =>par.GetAll()) .Returns(Enumerable.Repeat(currentStatement,1)); var newOperations = Enumerable.Range(1, 3) .Select(par => GetOperation(true, par.ToString(), par)); _operationsRepository.Setup(a => a.GetAll()) .Returns(currentOperations); //When _importer.ImportOperations(_fileName, newOperations); //Then _statementsRepository.Verify(par => par.Add(It.IsAny<BankStatement>()), Times.Once); Assert.AreEqual(_fileName, _insertedStatement.FileName); Assert.AreEqual(3, _insertedStatement.Updated); Assert.AreEqual(3, currentStatement.Replaced); Assert.AreEqual(2, currentStatement.Operations.Count); }
public IEnumerable<BankOperation> ImportOperations(string fileName, IEnumerable<BankOperation> opsToLoad) { BankStatement statement = new BankStatement() { FileName = fileName, LoadTime = DateTime.UtcNow, }; var allOps = _operationRepository.GetAll(); foreach (var item in opsToLoad) { var status = GetStatus(item, allOps); switch (status.Status) { case CheckStatus.New: AddNew(statement, item); break; case CheckStatus.Existing: statement.Skipped++; break; case CheckStatus.ExistingUncleared: UpdateExisting(statement, status); break; } } _statementsRepository.Add(statement); return statement.Operations; }
public async Task <bool> Pay(Guid idAccount, double amount) { var account = _accountService.GetAccountById(idAccount).Result; var bank = _bankService.GetBankById(account.IdBank); if (account.Invalid && bank.Invalid) { return(false); } Pay pay = new Pay(amount, DateTime.Now, account, bank); if (PayMade(pay) is false) { return(false); } var updatedAccount = await _accountService.UpdateAccount(account); if (UpdateMade(updatedAccount) is false) { return(false); } var bankStatement = new BankStatement(Enum.GetName(typeof(TransactionType), TransactionType.Pay), DateTime.Now, amount, account.Balance, account.Id, account.IdOwner); var insertedBankStatement = await _bankStatementService.RegisterBankStatement(bankStatement); return(updatedAccount && insertedBankStatement); }
public override IList <BankStatement> ParseFile(string pPath, string pAcctCode) { string[] lArrStrLines = System.IO.File.ReadAllLines(pPath); DateTime dateValue; IList <BankStatement> lLstObjResult = new List <BankStatement>(); for (int i = 0; i < lArrStrLines.Length; i++) { string[] lArrStrColumns = lArrStrLines[i].Split('|'); if (DateTime.TryParse(lArrStrColumns[1], out dateValue)) //valide { BankStatement lObjExtractBanking = new BankStatement(); lObjExtractBanking.AccountCode = pAcctCode; lObjExtractBanking.Date = Convert.ToDateTime(lArrStrColumns[1]); lObjExtractBanking.Reference = lArrStrColumns[3]; lObjExtractBanking.Detail = lArrStrColumns[4]; lObjExtractBanking.DebitAmount = Convert.ToDouble(Regex.Replace(lArrStrColumns[7], @"[$\,]", "")); lObjExtractBanking.CreditAmount = Convert.ToDouble(Regex.Replace(lArrStrColumns[8], @"[$\,]", "")); lLstObjResult.Add(lObjExtractBanking); } } return(lLstObjResult); }
public BankStGLTransPage(UnicontaBaseEntity sourceData) : base(sourceData) { Init(); master = sourceData as BankStatement; UpdateMaster(); }
public void ImportOperations_ExistingOperationDescriptionMultilineAndLineFeedIsDifferent_OperationProperlyDiscoveredAsExisting() { List<BankOperation> currentOperations = new List<BankOperation>() { GetOperation(true, "Op1", description: "Op1\raaa"), GetOperation(true, "Op2", description: "Op2\r\naaa"), GetOperation(true, "Op3", description: "Op3aaa") }; var currentStatement = new BankStatement(); currentStatement.Operations.AddRange(currentOperations); _operationsRepository.Setup(a => a.GetAll()) .Returns(currentOperations); List<BankOperation> newOperations = new List<BankOperation>() { GetOperation(true, "Op1", description: "Op1\r\naaa"), GetOperation(true, "Op2", description: "Op2\raaa"), GetOperation(true, "Op3", description: "Op3 aaa") }; //When var importOperations = _importer.ImportOperations(_fileName, newOperations); //Then Assert.AreEqual(0, importOperations.Count()); Assert.AreEqual(0, _insertedStatement.New); Assert.AreEqual(3, _insertedStatement.Skipped); }
public void Contribute(BankStatement statement) { var formattedBalance = _value.ToString("#.00", CultureInfo.InvariantCulture); var partialStatement = string.Format(" {0}", formattedBalance.PadRight(9)); statement.Add(partialStatement); }
public override IList <BankStatement> ParseFile(string pPath, string pAcctCode) { string[] lArrStrLines = System.IO.File.ReadAllLines(pPath); IList <BankStatement> lLstObjResult = new List <BankStatement>(); for (int i = 0; i < lArrStrLines.Length; i++) { BankStatement lObjExtractBanking = new BankStatement(); string lStrFecha = lArrStrLines[i].Substring(26, 10); string lStrReferencia = lArrStrLines[i].Substring(36, 10); string lStrImporte = lArrStrLines[i].Substring(46, 17); string lStrCargoAbono = lArrStrLines[i].Substring(63, 5); string lStrSaldo = lArrStrLines[i].Substring(68, 17); string lStrTransaccion = lArrStrLines[i].Substring(85, 50); lObjExtractBanking.AccountCode = pAcctCode; lObjExtractBanking.Date = Convert.ToDateTime(lStrFecha); lObjExtractBanking.Reference = lStrReferencia; lObjExtractBanking.Detail = lStrTransaccion; if (lStrCargoAbono.ToUpper() == "CARGO") { lObjExtractBanking.DebitAmount = Convert.ToDouble(lStrImporte); } else { lObjExtractBanking.CreditAmount = Convert.ToDouble(lStrImporte); } lLstObjResult.Add(lObjExtractBanking); } return(lLstObjResult); }
private BankStatement BuildBankStatement(decimal balance, DateTime date) { var bankStatement = new BankStatement(); bankStatement.SetProperty("Amount", MoneyAmount.Create(balance)); bankStatement.SetProperty("ExecutionDate", date); return(bankStatement); }
private static int GetBankId(string value, BankStatement statement) { int bankId; if (!int.TryParse(value, out bankId)) { bankId = 0; } return(bankId); }
static public string UnicontaCurrencyISO(Company company, BankStatement bankAccount) { if (bankAccount._Currency != 0) { return(CurrencyUtil.GetStringFromId((Currencies)bankAccount._Currency)); } else { return(CurrencyUtil.GetStringFromId((Currencies)company._Currency)); } }
public void GetLatestStatement_ShouldReturnNullIfNothingAvailable() { // Arrange Bank bank = new Bank(); // Act BankStatement nullStatement = bank.GetLatestStatement(); // Assert Assert.Null(nullStatement); }
private BankStatement GetBankPhoneNumber(BankStatement result, string item) { if (customerServicePhone.IsMatch(item)) { var matches = customerServicePhone.Matches(item); if (matches.Count == 1 && matches[0].Groups.Count == 2) { result.Bank.PhoneNumber = matches[0].Groups[1].Value; } } return(result); }
public override IList <BankStatement> ParseFile(string pPath, string pAcctCode) { string[] lArrStrLines = System.IO.File.ReadAllLines(pPath); DateTime dateValue; int lIntConsecutiveVal; IList <BankStatement> lLstObjResult = new List <BankStatement>(); for (int i = 0; i < lArrStrLines.Length; i++) { string[] lArrStrColumns = lArrStrLines[i].Split('|'); if ((DateTime.TryParse(lArrStrColumns[0], out dateValue)) && (lArrStrColumns.Count() < 5)) //valide { BankStatement lObjExtractBanking = new BankStatement(); lObjExtractBanking.AccountCode = pAcctCode; lObjExtractBanking.Date = Convert.ToDateTime(lArrStrColumns[0]); lObjExtractBanking.Reference = lArrStrColumns[1].Substring(0, 16).Trim(); lObjExtractBanking.Detail = lArrStrColumns[1].Substring(17, 53).Trim(); if (lArrStrColumns[2] != "") { lObjExtractBanking.DebitAmount = Convert.ToDouble(lArrStrColumns[2]); } if (lArrStrColumns[3] != "") { lObjExtractBanking.CreditAmount = Convert.ToDouble(lArrStrColumns[3]); } lLstObjResult.Add(lObjExtractBanking); } else if (int.TryParse(lArrStrColumns[0], out lIntConsecutiveVal) && (lArrStrColumns.Count() <= 10)) { BankStatement lObjExtractBanking = new BankStatement(); lObjExtractBanking.AccountCode = pAcctCode; lObjExtractBanking.Date = Convert.ToDateTime(lArrStrColumns[1]); lObjExtractBanking.Reference = lArrStrColumns[9].ToString(); lObjExtractBanking.Detail = string.IsNullOrEmpty(lArrStrColumns[7].ToString()) ? string.Empty : lArrStrColumns[7].ToString(); if (lArrStrColumns[2] == "C") { lObjExtractBanking.DebitAmount = Convert.ToDouble(lArrStrColumns[8]); } if (lArrStrColumns[2] == "A") { lObjExtractBanking.CreditAmount = Convert.ToDouble(lArrStrColumns[8]); } lLstObjResult.Add(lObjExtractBanking); } } return(lLstObjResult); }
public void BankStatemenListTransaction_ToPropertyMemo_MustNotBeEmpty() { //Arrange var service = new IOService(); var fileName = "extrato1.ofx"; var builder = service.ReadFile(fileName); //Action var bank = new BankStatement(); var BankStatement = bank.Create(builder, bank.Id); //Assert Assert.All(BankStatement.Transactions, Transactions => Assert.False(string.IsNullOrWhiteSpace(Transactions.Memo))); Assert.Equal(35, BankStatement.Transactions.Count); }
public BankStatement GenerateBankStatement(int id) { if (id == 0) { throw new IdentifierUndefinedException(); } BankAccount bankAccount = GetById(id); bankAccount.Transactions = _repositoryTransaction.GetManyByBankAccountId(bankAccount.Id).ToList(); BankStatement bankStatement = new BankStatement(); bankStatement.GenerateBankStatement(bankAccount); return(bankStatement); }
public void GivenEmptyContext_WhenOperationsAddedAndSaved_ThenAllPublicFieldsAreStored() { //Given XmlContext saveContext = GetNewContext(); //When var account = new BankAccount() { Number = "ACC1", Name = "Account1", Description = "DescAccount1" }; var accountsRepository = saveContext.GetRepository<IRepository<BankAccount>>(); accountsRepository.Add(account); var opType = new BankOperationType() { Name = "Type1" }; var opTypeRepository = saveContext.GetRepository<IRepository<BankOperationType>>(); opTypeRepository.Add(opType); var ops = new List<BankOperation>() { InitOperationWithTestData(1, account, opType, null), InitOperationWithTestData(2, account, opType, null), InitOperationWithTestData(3, account, opType, null) }; var opRepository = saveContext.GetRepository<IRepository<BankOperation>>(); foreach (var item in ops) { opRepository.Add(item); } var statement = new BankStatement() { FileName = "StatementFile", LoadTime = new DateTime(), Operations = ops }; var statementRepository = saveContext.GetRepository<IRepository<BankStatement>>(); statementRepository.Add(statement); Assert.IsTrue(saveContext.SaveChanges()); //Then - verify if operations can be loaded and have the same test data _saveMock.Setup(a => a.Load()).Returns(_savedContext); XmlContext loadContext = GetNewContext(); var savedOperationRepository = loadContext.GetRepository<IRepository<BankOperation>>(); Assert.AreEqual(3, savedOperationRepository.GetAll().Count()); foreach (var item in savedOperationRepository.GetAll()) { CheckOperation(item, account, opType); } }
public override void SetParameter(IEnumerable <ValuePair> Parameters) { foreach (var rec in Parameters) { if (string.Compare(rec.Name, "Bank", StringComparison.CurrentCultureIgnoreCase) == 0) { var cache = api.GetCache(typeof(Uniconta.DataModel.BankStatement)) ?? api.LoadCache(typeof(Uniconta.DataModel.BankStatement)).GetAwaiter().GetResult(); master = (Uniconta.DataModel.BankStatement)cache.Get(rec.Value); if (master != null) { UpdateMaster(); } } } base.SetParameter(Parameters); }
/// <summary> /// DOMESTIC Payment: /// Transfers within the same country. /// /// SEPA Payment: /// The conditions for a SEPA payment /// 1.Creditor payment has currency code 'EUR' /// 2.Sender - Bank og Receiver-Bank has to be member of the European Economic Area. /// 3.Creditor account has to be IBAN /// 4.Payment must be Non-urgent /// /// CROSS BORDER Payment: /// /// </summary> public ISO20022PaymentTypes ISOPaymentType(string paymentCcy, BankStatement _bankStatement, string creditorIBAN, Company company) { var companyIBAN = _bankStatement._IBAN ?? string.Empty; var companySWIFT = _bankStatement._SWIFT ?? string.Empty; var companyBankCountryId = string.Empty; if (companyIBAN != string.Empty) { companyBankCountryId = companyIBAN.Substring(0, 2); } else if (companySWIFT != string.Empty) { companyBankCountryId = companySWIFT.Substring(4, 2); } else { companyBankCountryId = company._CountryId.ToString(); } creditorIBAN = creditorIBAN ?? string.Empty; if (creditorIBAN != string.Empty && companyBankCountryId != string.Empty) { var creditorBankCountryId = creditorIBAN.Substring(0, 2); //SEPA payment: if (paymentCcy == BaseDocument.CCYEUR) { if (SEPACountry(companyBankCountryId) && SEPACountry(creditorBankCountryId)) { return(ISO20022PaymentTypes.SEPA); } } else if (companyBankCountryId == creditorBankCountryId) { return(ISO20022PaymentTypes.DOMESTIC); } else { return(ISO20022PaymentTypes.CROSSBORDER); } } return(ISO20022PaymentTypes.DOMESTIC); }
public void GivenEmptyContext_WhenSavedState_ThenXmlAsExpected() { //Given var context = GetNewContext(); //When var account = new BankAccount() { Number = "A", Name = "B", Description = "C" }; var accountsRepository = context.GetRepository<IRepository<BankAccount>>(); accountsRepository.Add(account); var opType = new BankOperationType() { Name = "xx" }; var opTypeRepository = context.GetRepository<IRepository<BankOperationType>>(); opTypeRepository.Add(opType); var ops = new List<BankOperation>() { new BankOperation(){Id=1,Description="A",BankAccount=account, Type = opType}, new BankOperation(){Id=2,Description="C",BankAccount =account, Type = opType} }; var opRepository = context.GetRepository<IRepository<BankOperation>>(); foreach (var item in ops) { opRepository.Add(item); } var statement = new BankStatement() { FileName = "A", LoadTime = new DateTime(), Operations = ops }; var statementRepository = context.GetRepository<IRepository<BankStatement>>(); statementRepository.Add(statement); Assert.IsTrue(context.SaveChanges()); //Then _saveMock.Verify(a => a.Save(It.IsAny<XElement>())); Assert.IsNotNull(_savedContext.ToString()); _saveMock.Setup(a => a.Load()).Returns(new XElement(_savedContext)); var context2 = new XmlContext(_saveMock.Object, GetRepoFactory()); }
public BankStLines(UnicontaBaseEntity sourceData) : base(sourceData) { InitializeComponent(); this.DataContext = this; master = sourceData as BankStatement; if (fromDate == DateTime.MinValue) { DateTime date = GetSystemDefaultDate(); var firstDayOfMonth = new DateTime(date.Year, date.Month, 1); var lastDayOfMonth = firstDayOfMonth.AddMonths(1).AddDays(-1); fromDate = firstDayOfMonth; toDate = lastDayOfMonth; } bool RoundTo100; var Comp = api.CompanyEntity; if (Comp.SameCurrency(master._Currency)) { RoundTo100 = Comp.RoundTo100; } else { RoundTo100 = !CurrencyUtil.HasDecimals(master._Currency); } if (RoundTo100) { Debit.HasDecimals = Credit.HasDecimals = Amount.HasDecimals = Total.HasDecimals = false; } if (!Comp._UseVatOperation) { VatOperation.Visible = false; } dgBankStatementLine.api = api; bankTransApi = new BankStatementAPI(api); SetRibbonControl(localMenu, dgBankStatementLine); dgBankStatementLine.UpdateMaster(master); dgBankStatementLine.BusyIndicator = busyIndicator; localMenu.OnItemClicked += localMenu_OnItemClicked; }
public IList <BankStatement> ParseLines(System.Data.DataTable pDtbStrLines, string pAcctCode) { DateTime dateValue; IList <BankStatement> lLstObjResult = new List <BankStatement>(); for (int i = 0; i < pDtbStrLines.Rows.Count; i++) { if (DateTime.TryParse(pDtbStrLines.Rows[i].ItemArray[0].ToString(), out dateValue)) //valide { BankStatement lObjExtractBanking = new BankStatement(); string lStrFecha = pDtbStrLines.Rows[i].ItemArray[0].ToString(); string lStrConcepto = pDtbStrLines.Rows[i].ItemArray[1].ToString(); string lStrReferencia = pDtbStrLines.Rows[i].ItemArray[2].ToString(); string lStrCargo = pDtbStrLines.Rows[i].ItemArray[4].ToString(); string lStrAbono = pDtbStrLines.Rows[i].ItemArray[5].ToString(); lObjExtractBanking.AccountCode = pAcctCode; lObjExtractBanking.Date = Convert.ToDateTime(lStrFecha); lObjExtractBanking.Reference = lStrReferencia; lObjExtractBanking.Detail = lStrConcepto; if (lStrCargo != "") { lObjExtractBanking.DebitAmount = Convert.ToDouble(Regex.Replace(lStrCargo, @"[$\,]", "")); } if (lStrCargo == "") { lObjExtractBanking.DebitAmount = 0; } if (lStrAbono != "") { lObjExtractBanking.CreditAmount = Convert.ToDouble(Regex.Replace(lStrAbono, @"[$\,]", "")); } if (lStrAbono == "") { lObjExtractBanking.CreditAmount = 0; } lLstObjResult.Add(lObjExtractBanking); } } return(lLstObjResult); }
public void CreateBankStatement() { // Arrange int bankId = 10; MoneyAmount amount = MoneyAmount.Create(12.50m); DateTime date = DateTime.Parse("2018-04-28 18:35:27"); Bank bank = new Bank(); bank.SetId(bankId); // Act BankStatement statement = bank.NewBankStatement(amount, date); // Assert Assert.Equal(bankId, statement.Bank.Id); Assert.Equal(date, statement.ExecutionDate); Assert.Equal(amount, statement.Amount); }
private static DateTime ConvertOfxDateToDateTime(string ofxDate, BankStatement statement) { DateTime dateTimeReturned = DateTime.MinValue; try { int year = GetPartOfOfxDate(ofxDate, Enumerators.PartDateTime.YEAR); int month = GetPartOfOfxDate(ofxDate, Enumerators.PartDateTime.MONTH); int day = GetPartOfOfxDate(ofxDate, Enumerators.PartDateTime.DAY); int hour = GetPartOfOfxDate(ofxDate, Enumerators.PartDateTime.HOUR); int minute = GetPartOfOfxDate(ofxDate, Enumerators.PartDateTime.MINUTE); int second = GetPartOfOfxDate(ofxDate, Enumerators.PartDateTime.SECOND); dateTimeReturned = new DateTime(year, month, day, hour, minute, second); } catch (Exception) { } return(dateTimeReturned); }
/// <summary> /// Converts a Bank Extract line to a Bank Page. /// </summary> /// <param name="pObjExtractBanking"></param> /// <returns></returns> private SAPbobsCOM.BankPages PopulateBankPages(BankStatement pObjExtractBanking) { mObjBankPage = (SAPbobsCOM.BankPages)mObjCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oBankPages); mObjBankPage.AccountCode = pObjExtractBanking.AccountCode; mObjBankPage.DueDate = pObjExtractBanking.Date; mObjBankPage.Reference = pObjExtractBanking.Reference; mObjBankPage.Memo = pObjExtractBanking.Detail; if (pObjExtractBanking.DebitAmount > 0) { mObjBankPage.DebitAmount = pObjExtractBanking.DebitAmount; } if (pObjExtractBanking.CreditAmount > 0) { mObjBankPage.CreditAmount = pObjExtractBanking.CreditAmount; } return(mObjBankPage); }
public List <BankStatement> readBankall(DateTime fromDate, DateTime toDate, int?LocId) { List <BankStatement> lst = new List <BankStatement>(); DbCommand dbcommand = myDataBase.GetStoredProcCommand(DBConstant.READ_ALLBANKSTATEMENT_SEARCH); if (LocId != 0) { myDataBase.AddInParameter(dbcommand, "@LocationId", DbType.Int32, LocId); } else { myDataBase.AddInParameter(dbcommand, "@LocationId", DbType.Int32, DBNull.Value); } myDataBase.AddInParameter(dbcommand, "@in_from_date", DbType.DateTime, fromDate); myDataBase.AddInParameter(dbcommand, "@in_to_date", DbType.DateTime, toDate); using (IDataReader reader1 = myDataBase.ExecuteReader(dbcommand)) { while (reader1.Read()) { BankStatement bankstatement = new BankStatement(); bankstatement.DATE = GetStringFromDataReader(reader1, "DATE"); bankstatement.VouchNo = GetStringFromDataReader(reader1, "voch.No"); bankstatement.Account_Code = GetIntegerFromDataReader(reader1, "A/C Code"); bankstatement.Account_Head = GetStringFromDataReader(reader1, "Account_Head"); bankstatement.Particulars = GetStringFromDataReader(reader1, "Particulars"); bankstatement.Chq_No = GetStringFromDataReader(reader1, "Chq-No."); bankstatement.DEBITAMOUNT = GetIntegerFromDataReader(reader1, "DEBIT AMOUNT"); bankstatement.BankName = GetStringFromDataReader(reader1, "Bank Name"); bankstatement.CREDITAMOUNT = GetStringFromDataReader(reader1, "Credit Amount"); TotalDebitAmount = Convert.ToInt32(TotalDebitAmount) + Convert.ToInt32(bankstatement.DEBITAMOUNT); bankstatement.TotalDebitAmt = TotalDebitAmount; lst.Add(bankstatement); } } return(lst); }
public override IList <BankStatement> ParseFile(string pPath, string pAcctCode) { IList <BankStatement> lLstObjResult = new List <BankStatement>(); string lStrContent = System.IO.File.ReadAllText(pPath); XmlDocument lObjXmlDoc = new XmlDocument(); lObjXmlDoc.LoadXml(lStrContent); XmlNodeList lObjNodeRows = lObjXmlDoc.GetElementsByTagName("Row"); int i = 0; foreach (XmlNode lObjNodeRow in lObjNodeRows) { if (i >= 2) { if (lObjNodeRow.ChildNodes.Count < 7) { continue; } BankStatement lObjExtractBanking = new BankStatement(); lObjExtractBanking.AccountCode = pAcctCode; lObjExtractBanking.Date = DateTime.ParseExact(lObjNodeRow.ChildNodes.Item(0).InnerText, "yyyy-MM-dd", CultureInfo.InvariantCulture); lObjExtractBanking.Reference = lObjNodeRow.ChildNodes.Item(2).InnerText; lObjExtractBanking.Detail = lObjNodeRow.ChildNodes.Item(3).InnerText; Double lDblTemp = 0; if (Double.TryParse(lObjNodeRow.ChildNodes.Item(4).InnerText, out lDblTemp)) { lObjExtractBanking.DebitAmount = lDblTemp; } if (Double.TryParse(lObjNodeRow.ChildNodes.Item(5).InnerText, out lDblTemp)) { lObjExtractBanking.CreditAmount = lDblTemp; } lLstObjResult.Add(lObjExtractBanking); } i++; } return(lLstObjResult); }
public override IList <BankStatement> ParseFile(string pPath, string pAcctCode) { string[] lArrStrLines = System.IO.File.ReadAllLines(pPath); int dateValue; IList <BankStatement> lLstObjResult = new List <BankStatement>(); for (int i = 0; i < lArrStrLines.Length; i++) { string[] lArrStrColumns = lArrStrLines[i].Split(','); if (int.TryParse(Regex.Replace(lArrStrColumns[1].ToString(), @"[^\w]", ""), out dateValue)) //valide { BankStatement lObjExtractBanking = new BankStatement(); string lStrConvertFecha = Regex.Replace(lArrStrColumns[1].ToString(), @"[^\w]", ""); string lStrCargoAbono = lArrStrColumns[5].ToString(); string lStrImporte = Regex.Replace(lArrStrColumns[6].ToString(), @"[^\w]", ""); lObjExtractBanking.AccountCode = pAcctCode; lObjExtractBanking.Date = DateTime.ParseExact(lStrConvertFecha, "ddMMyyyy", CultureInfo.InvariantCulture); lObjExtractBanking.Reference = Regex.Replace(lArrStrColumns[8].ToString(), @"[^\w]", ""); lObjExtractBanking.Detail = Regex.Replace(lArrStrColumns[4].ToString(), @"[^\w]", " ").Trim(); lStrCargoAbono = lStrCargoAbono.ToArray().Contains('+') ? "ABONO" : "CARGO"; if (lStrCargoAbono.ToUpper() == "CARGO") { lObjExtractBanking.DebitAmount = Convert.ToDouble(lStrImporte); } else { lObjExtractBanking.CreditAmount = Convert.ToDouble(lStrImporte); } lLstObjResult.Add(lObjExtractBanking); } } return(lLstObjResult); }
public void Post([FromBody] BankStatement BankStatement) { //BankStatement BankStatement = new BankStatement() //{ // BankStatementBrand = BankStatementDto.BankStatementBrand, // BankStatementholderName = BankStatementDto.BankStatementholderName, // CVS = BankStatementDto.CVS, // BankStatementType = BankStatementDto.BankStatementType, // Id = BankStatementDto.BankStatementId, // ExpirationDate = BankStatementDto.ExpirationDate, // Number = BankStatementDto.Number, // CreatedDate = BankStatementDto.CreatedDate //}; try { // _BankStatementBusiness.SaveAndUpdate(BankStatement); _BankStatementBusiness.Save(); } catch (Exception ex) { // throw new System.Web.Http.HttpResponseException(System.Net.HttpStatusCode.InternalServerError); } }
private async Task AddBankStatementData(BankStatement currentBankStatement) { try { Bank bankEntity = _bankRepository.GetByAgencyCode(currentBankStatement.BankAccount.Bank.Code); if (bankEntity == null) { await _bankRepository.Add(currentBankStatement.BankAccount.Bank); } else { currentBankStatement.BankAccount.Bank = bankEntity; currentBankStatement.BankAccount.BankId = bankEntity.Id; } BankAccount accountEntity = _bankAccountRepository.GetByAccountBankId(currentBankStatement.BankAccount.AccountCode, currentBankStatement.BankAccount.BankId); if (accountEntity == null) { await _bankAccountRepository.Add(currentBankStatement.BankAccount); } else { currentBankStatement.BankAccount = accountEntity; currentBankStatement.BankAccount.Id = accountEntity.Id; } currentBankStatement.Transactions = null; await _bankStatementRepository.Add(currentBankStatement); includeBankStatementData = true; } catch (Exception ex) { throw new Exception(ex.Message); } }
private void Compare(BankStatement statement, string toCheck) { if (statement.ToString().Length < toCheck.Length) { throw new AssertionException(string.Format( "the bank statement is shorter than what we expect.\n bank statement: {0} \n expected string: {1} ", statement, toCheck)); } char characterFromStatement; char characterToCheck; for (int i = 0; i < toCheck.Length; i++) { characterToCheck = toCheck[i]; characterFromStatement = statement.ToString()[i]; if (characterToCheck != characterFromStatement) { throw new AssertionException(string.Format( "The character at {0} is different than expected.\n Bank statement: {1}\n expected string: {2}", i, statement, toCheck)); } } }
public void PrintLine(BankStatement statement) { Statements.Add(statement); }
public Connector1C(string filename, Company company) { Helper.Log("Старт"); OdbcConnection conn = new OdbcConnection(); conn.ConnectionString = "Driver={Microsoft dBase Driver (*.dbf)};SourceType=DBF;SourceDB=" + filename + ";Exclusive=No; NULL=NO;DELETED=NO;BACKGROUNDFETCH=NO;"; conn.Open(); if (conn.State == System.Data.ConnectionState.Open) { OdbcCommand oCmd = conn.CreateCommand(); oCmd.CommandText = "SELECT * FROM " + filename; DataTable ImportedTable = new DataTable(); ImportedTable.Load(oCmd.ExecuteReader()); ImportedRows.AddRange(ImportedTable.Select()); DataRow[] statementRows = ImportedTable.Select("REKVTYPE = 'Документ.Выписка' AND REKVIZIT <> 'Субконто3'"); for (int i = 0; i < statementRows.Length; i++) { DataRow row = statementRows[i]; double StatementStartRowIndex = (double)row[0]; double StatementEndRowIndex = GetStatementEndIndex(StatementStartRowIndex); BankStatement bs = new BankStatement(); bs.GUID = (double)row[0]; try { // ШАПКА double BaseGUID = bs.GUID - 1; bs.Наименование = row["REKVIZIT"].ToString(); Helper.Log(bs.Наименование); DataRow rowID = ImportedRows[(int)(BaseGUID + 2)]; bs.НомерДок = rowID[5].ToString(); DataRow rowDate = ImportedRows[(int)(BaseGUID + 3)]; bs.ДатаДок = rowDate[5].ToString(); // ТАБЛИЧНАЯ ЧАСТЬ List<Transfer> transfers = new List<Transfer>(); List<DataRow> TransferRows = new List<DataRow>(); string cond = "PARENTGUID = " + bs.GUID + " AND REKVIZIT = 'ВидДвижения'" + " AND REKVTYPE = 'Справочник.ДвиженияДенежныхСредств'"; TransferRows.AddRange(ImportedTable.Select(cond)); string Currency = GetStatementCurrency(StatementStartRowIndex, StatementEndRowIndex); for (int j = 0; j < TransferRows.Count; j++) { DataRow transferBaseRow = TransferRows[j]; double TransferStartRowIndex = (double)transferBaseRow[0]; double TransferEndRowIndex = GetTransferEndIndex(TransferStartRowIndex); int transferBaseGUID = (int)(double)transferBaseRow[0] - 1; try { Transfer t = new Transfer(); t.КоррСчёт = ImportedRows[transferBaseGUID + 2][5].ToString(); t.НазначениеПлатежа = ImportedRows[transferBaseGUID + 1][5].ToString(); t.Субконто1 = GetSubconto(1, transferBaseGUID); t.Субконто2 = GetSubconto(2, transferBaseGUID); t.Субконто3 = GetSubconto(3, transferBaseGUID); t.Приход = GetTransferAttributeDouble("Приход", transferBaseGUID); t.Расход = GetTransferAttributeDouble("Расход", transferBaseGUID); t.Валюта = Currency; t.ВидДвижения = GetTransferAttributeName("ВидДвижения", transferBaseGUID); t.Company = company; if (bs.Наименование.Contains('т') && bs.Наименование.Contains('д')) { } bool IsIncome = t.Приход > t.Расход; if (t.Валюта == "BYR") { t.Курс = 1; } else { t.Курс = GetTransferRate(IsIncome, StatementStartRowIndex, StatementEndRowIndex, TransferStartRowIndex, TransferEndRowIndex); } bs.Transfers.Add(t); } catch (Exception e) { Helper.Log("ID=" + transferBaseGUID.ToString() + ": " + e.Message); } } statements.Add(bs); Helper.Log("Платежей в выписке: " + bs.Transfers.Count); } catch (Exception e) { Helper.Log(e.Message); } } conn.Close(); Helper.Log("Импорт из DBF завершен."); } }
tbl_Cashflow CreateCashflow(Entities db, Transfer t, BankStatement statement) { tbl_Cashflow c = new tbl_Cashflow(); c.ModifiedByID = GetSupervisorID(); c.ModifiedOn = DateTime.Now; c.CreatedByID = GetSupervisorID(); c.CreatedOn = DateTime.Now; // 01 НОМЕР c.CFNumber = GetNextNumber(db); // 02 НАЗНАЧЕНИЕ c.Subject = t.ВидДвижения + ": " + t.НазначениеПлатежа; // 03 ОТ DateTime DocDate = GetDateTime(statement.ДатаДок); c.DocDate = DocDate; // 04 ТИП CashflowType cashflowType; if (t.Приход > 0) cashflowType = CashflowType.Income; else cashflowType = CashflowType.Expense; c.TypeID = GetCashflowTypeID(cashflowType); // 05 СТАТЬЯ NULL // 06 КАТЕГОРИЯ NULL // 07 ОТВЕТСТВЕННЫЙ c.OwnerID = GetOwnerID(); // 08 СОСТОЯНИЕ c.StatusID = new Guid(Constants.CashflowStateFinishedID); // 09 ИНЦИДЕНТ NULL // 10 ВОЗДЕЙСТВИЕ NULL // 11 PL - (UseAsPandL - P&L) NULL // 12 КАССА c.CashAccountID = new Guid(Constants.CashflowKassaID); // 13 ПЛАНИРУЕМАЯ ДАТА c.EstimatedDate = GetDateTime(statement.ДатаДок); // 14 ФАКТИЧЕСКАЯ ДАТА c.ActualDate = GetDateTime(statement.ДатаДок); // 15 ТИП РАСХОДА-ДОХОДА NULL // 16 ПЕРИОД c.PeriodID = GetPeriodID(db, c.ActualDate.Value); // 00 Контрагент string comments = ""; Guid? AccountID = GetAccountID(db, t); if (!AccountID.HasValue) { comments += "Контрагент не найден: " + GetAccountNameCode(t) + ".\r\n"; } // 19 УЧИТЫВАТЬ ПРИ ВЗАИМОРАСЧЁТАХ NULL // 20 ДЕБИТОР-КРЕДИТОР NULL // 21 АВТОМАТИЧЕСКИ РАССЧИТЫВАТЬ СУММУ c.AutocalcAmount = 1; // 22 ВАЛЮТ c.CurrencyID = ConvertToCurrencyID(t.Валюта); // 23 СУММА if (cashflowType == CashflowType.Income) c.Amount = (decimal)t.Приход; else c.Amount = (decimal)t.Расход; // 24 ВНУТРЕННИЙ КУРС c.CurrencyRate = (decimal)t.Курс; // 25 СУММА В БАЗОВОЙ ВАЛЮТЕ NULL //c.BasicAmount = (int)(c.Amount / c.CurrencyRate); // 26 КОНТАКТ NULL // 27 СЧЁТ NULL // 28 ДОГОВОР Guid? ContractID = GetContractID(db, t); if (ContractID.HasValue) { c.ContractID = ContractID; } else { comments += "Договор не найден: " + GetContractName(t) + "."; } // 29 ПРОДАЖА - получаем из договора if (ContractID.HasValue) { c.OpportunityID = GetOpportunityIDFromContract(db, ContractID); } // 30 МЕНЕДЖЕР - получаем из договора if (ContractID.HasValue) { c.ManagerID = GetManagerIDFromContract(db, ContractID); } else if (AccountID.HasValue) { c.ManagerID = GetManagerIDFromAccount(db, AccountID); } else { c.ManagerID = GetDefaultManagerID(); } // 31 если найден договор, но не найден контрагент if (ContractID.HasValue && !AccountID.HasValue) { AccountID = GetAccountIDFromContract(db, ContractID); } // 17 ПЛАТЕЛЬЩИК // 18 ПОЛУЧАТЕЛЬ if (cashflowType == CashflowType.Income) { c.PayerID = AccountID; c.RecipientID = GetCompanyID(t.Company); } else { c.PayerID = GetCompanyID(t.Company); c.RecipientID = AccountID; } // если назначение содержит номер счёта string PayDetails = t.НазначениеПлатежа; string InvoiceString = "счет "; if (PayDetails.Contains(InvoiceString)) { int NumStart = PayDetails.IndexOf(InvoiceString) + 5; string substr1 = PayDetails.Substring(NumStart); int NumEnd = substr1.IndexOf(' '); string InvoiceNumber = substr1.Substring(0, NumEnd); // найти счёт // фильтр по номеру счёта List<tbl_Invoice> invoices = db.tbl_Invoice.Where(i => i.InvoiceNumber == InvoiceNumber).ToList(); // фильтр по дате счёта (год)? invoices = invoices.Where(i => i.InvoiceDate.Year == DateTime.Now.Year).ToList(); // фильтр по контрагенту if (AccountID.HasValue) { invoices = invoices.Where(i => i.CustomerID == AccountID).ToList(); } if (invoices.Count > 0) { tbl_Invoice i = invoices.First(); c.InvoiceID = i.ID; } } c.Comments = comments; //t.КоррСчёт - пока не использовать c.ID = Guid.NewGuid(); return c; }
private void CommitTransferToLocalList(Entities db, Transfer t, BankStatement statement) { tbl_Cashflow c = CreateCashflow(db, t, statement); statement.Cashflows.Add(c); }
private void UpdateExisting(BankStatement statement, CheckResult status) { var currentStatement = _statementsRepository.GetAll() .First(a => a.Operations.Any(b => b.Id == status.ExistingOperation.Id)); var opToRemove = currentStatement.Operations.First(a => a.Id == status.ExistingOperation.Id); currentStatement.Operations.Remove(opToRemove); currentStatement.Replaced++; statement.Operations.Add(status.ExistingOperation); statement.Updated++; status.ExistingOperation.Cleared = true; }
private void CommitTransferToDatabase(Entities db, Transfer t, BankStatement statement) { tbl_Cashflow c = CreateCashflow(db, t, statement); db.AddTotbl_Cashflow(c); db.SaveChanges(); }
private void AddNew(BankStatement statement, BankOperation item) { _operationRepository.Add(item); statement.Operations.Add(item); statement.New++; }
public override void Contribute(BankStatement statement) { var partOfStatement = string.Format("|| {0}|| ||", Formattedvalue()); statement.Add(partOfStatement); }
public void SetUp() { _operationsRepository = new Mock<IRepository<BankOperation>>(); _statementsRepository = new Mock<IRepository<BankStatement>>(); _statementsRepository.Setup(par => par.Add(It.IsAny<BankStatement>())) .Callback<BankStatement>(st => _insertedStatement = st); _importer = new OperationsImporter(_operationsRepository.Object, _statementsRepository.Object); }