public void OpenBalance(Customer user, int currency) { //Check if user balance already exists var exists = context.UserBalance.Any(s => s.Currency == currency && s.Customer == user); if (exists) { throw new ArgumentException("User has ballance in this currency"); } var balance = new CustomerBalance() { Customer = user, Currency = currency, Balance = 0, }; var history = new BalanceHistory() { Currency = currency, Customer = user, Date = DateTime.Now, TrackedBalance = balance, Amount = 0 }; context.AddRange(balance, history); context.SaveChanges(); }
public async Task Consume(ReceiveContext <CustomerCreated> messageContext) { Guard.NotNull(messageContext, nameof(messageContext)); var customerBalance = CustomerBalance.CreateCustomerBalance(messageContext.Message.CustomerId); await this.repository.Save(customerBalance); }
public void CloseBalance(CustomerBalance balance) { var transactions = GetCustomerTransactions(balance.Customer).Where(s => s.Currency == balance.Currency); context.Transactions.RemoveRange(transactions); context.UserBalance.Remove(balance); context.SaveChanges(); }
public ApiResponse Delete([FromBody] CustomerBalance customerBalance) { if (Balances.Exists(x => x.CustomerNumber.Equals(customerBalance.CustomerNumber))) { Balances.Remove(Balances.First(x => x.CustomerNumber.Equals(customerBalance.CustomerNumber))); } return(ApiResponse.Success); }
public ApiResponse Post([FromBody] CustomerBalance customerBalance) { if (Balances.Exists(x => x.CustomerNumber.Equals(customerBalance.CustomerNumber))) { return(new ApiResponse { IsError = true, ErrorDescription = "Already exists" }); } Balances.Add(customerBalance); return(ApiResponse.Success); }
public override Result <CustomerPayment> Remove(CustomerPayment entity) { Result <CustomerPayment> result = new Result <CustomerPayment>(-1, -1, "error_msg"); using (var transaction = _Context.Database.BeginTransaction()) { try { var obj = this.Get(entity.Id).Data.FirstOrDefault(); if (obj == null) { return(new Result <CustomerPayment>(-1, -1, "paymentNotValid_msg")); } obj.Active = false; Invoice invoice = _Context.Invoices.FirstOrDefault(x => x.Active == true && x.InvoiceNumber == obj.InvoiceNumber); invoice.PaidAmount -= obj.PaidAmount; invoice.PaidAmount = invoice.PaidAmount < 0 ? 0 : invoice.PaidAmount; invoice.OwedAmount += obj.PaidAmount; invoice.OwedAmount = invoice.OwedAmount > invoice.TotalAmount ? invoice.TotalAmount : invoice.OwedAmount; if (invoice.State != (char)Enums.BillingStates.Billed) { invoice.State = (char)Enums.BillingStates.Billed; } _Context.Invoices.Update(invoice); _Context.SaveChanges(); CustomerBalance customerBalance = _Context.CustomersBalance.FirstOrDefault(x => x.Active == true && x.CustomerId == obj.CustomerId && x.CurrencyId == obj.CurrencyId); if (customerBalance != null) { customerBalance.OwedAmount += obj.PaidAmount; _Context.CustomersBalance.Update(customerBalance); _Context.SaveChanges(); } // obj.ModificadoPor = userNamer; obj.ModifiedDate = DateTime.Now; _Context.CustomersPayments.Update(obj); _Context.SaveChanges(); transaction.Commit(); return(new Result <CustomerPayment>(0, 0, "ok_msg", new List <CustomerPayment>() { obj })); } catch (Exception ex) { transaction.Rollback(); result.Exception = ex; return(result); } } }
public IHttpActionResult UpdateCustomerBalance(PurchaseData oPurch) {//PurchaseData oPurch //Connet to db EarthSkyTimeEntities1 estEnt = new EarthSkyTimeEntities1(); int newBalance = 0; var oBal = (from b in estEnt.CustomerBalances where b.CustomerID == oPurch.CustomerID select b).FirstOrDefault(); if (oBal != null) { oBal.Balance += Convert.ToDecimal(oPurch.Amount); newBalance = Convert.ToInt32(oBal.Balance); oBal.DateUpdated = DateTime.Now; // Insert Transaction Transaction oTran = new Transaction() { AddedBy = "Admin", CustomerID = oPurch.CustomerID, Amount = oPurch.Amount, LocationID = oPurch.LocationID, TransactionDate = DateTime.Now }; estEnt.Transactions.Add(oTran); estEnt.SaveChanges(); } else { CustomerBalance oCust = new CustomerBalance() { Balance = oPurch.Amount, CustomerID = oPurch.CustomerID, DateUpdated = DateTime.Now, UpdatedBy = "LR" }; estEnt.CustomerBalances.Add(oCust); Transaction oTran = new Transaction() { AddedBy = "Admin", CustomerID = oPurch.CustomerID, Amount = oPurch.Amount, LocationID = oPurch.LocationID, TransactionDate = DateTime.Now }; estEnt.Transactions.Add(oTran); newBalance = Convert.ToInt32(oPurch.Amount); estEnt.SaveChanges(); } return(Ok(newBalance)); }
public void ConvertBalance() { var balance = new CustomerBalance { Currency = (int)Currency.GBP, Balance = 1000 }; var curr = new CurrencyConverter(); var res = curr.ConvertCustomerBalanceToGivenCurrency(balance, Currency.PLN); output.WriteLine($"I got {res} PLN from 1000 GBP"); }
public decimal ConvertCustomerBalanceToGivenCurrency(CustomerBalance balance, Currency currencyTo) { var latestRates = GetLatestExchangeRates(); //I didn't create DTO for this api call. Might add it later dynamic dic = JsonConvert.DeserializeObject(latestRates.Result); var toSymbol = Enum.GetName(typeof(Currency), currencyTo); var fromSymbol = Enum.GetName(typeof(Currency), balance.Currency); var toRate = dic["rates"][toSymbol]; var fromRate = dic["rates"][fromSymbol]; return(toRate / fromRate * balance.Balance); }
public async Task <IActionResult> OnPostAsync() { customer.prepare(); customer.Verified = false; DBInterface.cust.InsertOne(customer); var sess = await SessionManager.InsertSession(customer); await ExecuteWelcome(); CustomerBalance balance = new CustomerBalance(); balance.Email = customer.Email; balance.Balance = 0; DBInterface.bal.InsertOne(balance); HttpContext.Session.SetString("sessionID", sess.SessionID); return(Redirect("/Dashboard")); }
//根据客户编码获取账户余额实体 public CustomerBalance GetCustomerBalance(string customerCode) { Expression <Func <CustomerBalance, bool> > filter = p => true; filter = filter.AndIf(p => p.CustomerCode.Contains(customerCode), !string.IsNullOrWhiteSpace(customerCode)); CustomerBalance model = _customerBalanceRepository.Single(filter); if (model == null) //如果用户余额表中没有该用户数据 { model = new CustomerBalance { CustomerCode = _workContext.User.UserUame, Balance = 0 }; } return(model); }
public List <PeriodItem> CustomerStatementParameterLookup(int buildingId, string customerCode, DateTime processMonth, int numberOfMonths) { var building = _DataContext.tblBuildings.Single(a => a.id == buildingId); var dDate = new DateTime(processMonth.Year, processMonth.Month, 1); string sqlPeriodConfig = PervasiveSqlUtilities.ReadResourceScript("Astrodon.Reports.Scripts.PeriodParameters.sql"); sqlPeriodConfig = SetDataSource(sqlPeriodConfig, building.DataPath); var periodData = PervasiveSqlUtilities.FetchPervasiveData(sqlPeriodConfig); string sqlCustomerBalances = PervasiveSqlUtilities.ReadResourceScript("Astrodon.Reports.Scripts.CustomerBalance.sql"); sqlCustomerBalances = SetDataSource(sqlCustomerBalances, building.DataPath); sqlCustomerBalances = sqlCustomerBalances.Replace("@CUSTOMERCODE", customerCode.Trim()); var customerBalanceData = PervasiveSqlUtilities.FetchPervasiveData(sqlCustomerBalances); CustomerBalance custBalance = new CustomerBalance(customerBalanceData.Rows[0]); PeriodDataItem periodItem = null; foreach (DataRow row in periodData.Rows) { periodItem = new PeriodDataItem(row); break; } List <PeriodItem> result = new List <PeriodItem>(); var lastPeriod = periodItem.PeriodLookup(dDate); var firstPeriod = periodItem.PeriodLookup(lastPeriod.Start.Value.AddMonths((numberOfMonths * -1) + 1)); lastPeriod.OpeningBalance = Convert.ToDouble(custBalance.CalcOpening(lastPeriod.PeriodNumber)); lastPeriod.ClosingBalance = Convert.ToDouble(custBalance.CalcOpening(lastPeriod.PeriodNumber)); firstPeriod.OpeningBalance = Convert.ToDouble(custBalance.CalcOpening(firstPeriod.PeriodNumber)); firstPeriod.ClosingBalance = Convert.ToDouble(custBalance.CalcOpening(firstPeriod.PeriodNumber)); result.Add(firstPeriod); result.Add(lastPeriod); return(result); }
public void EditBalance(CustomerBalance balance, decimal newValue) { var difference = newValue - balance.Balance; var comment = $"AUTOGENERATED {DateTime.Now.ToString()} changed to {newValue.ToString()} by adding {difference}"; var transaction = new Transaction { Amount = difference, Currency = balance.Currency, Customer = balance.Customer, Date = DateTime.Now, Description = comment, }; AddTransaction(transaction); //Persist the new balance value balance.Balance = newValue; context.UserBalance.Update(balance); context.SaveChanges(); }
public void ConvertListOfBalancesToGivenCurrency() { var balance1 = new CustomerBalance { Currency = (int)Currency.GBP, Balance = 1000 }; var balance2 = new CustomerBalance { Currency = (int)Currency.USD, Balance = 1000 }; var balances = new List <CustomerBalance> { balance1, balance2 }; var curr = new CurrencyConverter(); var res = curr.ConvertListOfBalancesToGivenCurrency(balances, Currency.PLN); output.WriteLine($"I got {res} PLN from those monies"); }
public void CreateCustomer(Customer customer) { Check.Argument.IsNotNull(customer, "客户"); Check.Argument.IsNullOrWhiteSpace(customer.AccountID, "登录账号"); CustomerBalance customerBalance = new CustomerBalance(); if (_customerRepository.Count(p => p.AccountID == customer.AccountID) > 0) { throw new ArgumentException("登录账号\"{0}\"已经存在.".FormatWith(customer.AccountID)); } using (var transaction = new TransactionScope()) { if (string.IsNullOrWhiteSpace(customer.CustomerCode)) { customer.CustomerCode = GenerateCustomerCode(); } customer.CustomerManager = string.IsNullOrEmpty(customer.CustomerManager) ? GetCustomerManager("谭晓英").Name: customer.CustomerManager; customer.PaymentTypeID = 4; //结算类型-现结 customer.CustomerID = Guid.NewGuid(); customer.Name = customer.Name; customer.AccountPassWord = string.IsNullOrWhiteSpace(customer.AccountPassWord) ? "123456".ToMD5() : customer.AccountPassWord.ToMD5(); customer.CreatedOn = customer.LastUpdatedOn = DateTime.Now; //_workContext.User.UserUame; customer.CreatedBy = customer.LastUpdatedBy = customer.AccountID; customer.EnableCredit = customer.EnableCredit; customer.MaxDelinquentAmounts = customer.MaxDelinquentAmounts; _customerRepository.Add(customer); _customerRepository.UnitOfWork.Commit(); customerBalance.CustomerID = customer.CustomerID; customerBalance.CustomerCode = customer.CustomerCode.ToUpperInvariant().Trim(); customerBalance.Balance = 0; customerBalance.CreatedOn = customer.CreatedOn; customerBalance.LastUpdatedOn = customer.CreatedOn; _customerBalanceRepository.Add(customerBalance); _customerBalanceRepository.UnitOfWork.Commit(); transaction.Complete(); } }
/// <summary> /// Adds the amount input by the user to the balance /// </summary> /// <param name="feed"></param> public void AddCustomerBalance(string feed) { try { decimal moneyFed = decimal.Parse(feed); if (moneyFed >= 0 && ((moneyFed % 1) == 0)) { CustomerBalance += moneyFed; Console.WriteLine("You have fed " + moneyFed.ToString("C2")); Console.WriteLine("Your balance is now " + CustomerBalance.ToString("C2")); Console.WriteLine(); } else { Console.WriteLine("Error: Please enter a whole number"); } } catch (Exception) { Console.WriteLine("Error: Please enter a whole number"); } }
public override string ToString() { return($"Status: {Status.ToString()} Balance Amount: {CustomerBalance.ToString()}"); }
// POST api/<controller> public IHttpActionResult UpdateCustomerDetail(CustomerDetail oCustInfo) { EarthSkyTimeEntities1 estEntity = new EarthSkyTimeEntities1(); int iReturnID = 0; if (oCustInfo.CustomerID == 0) { Customer oCust = new Customer() { AddedBy = "Admin", City = oCustInfo.City, FirstName = oCustInfo.FirstName, LastName = oCustInfo.LastName, Phone = oCustInfo.Phone, State = oCustInfo.State, Street1 = oCustInfo.Street1, Street2 = oCustInfo.Street2, Zip = oCustInfo.Zip, Email = oCustInfo.Email }; estEntity.Customers.Add(oCust); estEntity.SaveChanges(); iReturnID = oCust.CustomerID; // Setup their Balance information CustomerBalance oBal = new CustomerBalance() { Balance = 0, CustomerID = oCust.CustomerID, DateUpdated = DateTime.Now, UpdatedBy = "Admin" }; estEntity.CustomerBalances.Add(oBal); estEntity.SaveChanges(); } else { // Update the customer var oC = (from c in estEntity.Customers where c.CustomerID == oCustInfo.CustomerID select c).FirstOrDefault(); if (oC != null) { oC.City = oCustInfo.City; oC.FirstName = oCustInfo.FirstName; oC.LastName = oCustInfo.LastName; oC.Phone = oCustInfo.Phone; oC.State = oCustInfo.State; oC.Street1 = oCustInfo.Street1; oC.Street2 = oCustInfo.Street2; oC.Zip = oCustInfo.Zip; oC.Email = oCustInfo.Email; estEntity.SaveChanges(); iReturnID = oCustInfo.CustomerID; } } return(Ok(iReturnID)); }
public ICollection <BalanceHistory> GetBalanceHistory(CustomerBalance balance) { var history = context.BalanceHistories.AsNoTracking().Where(s => s.TrackedBalance == balance).OrderBy(s => s.Date).ToList(); return(history); }