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();
        }
Ejemplo n.º 2
0
        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);
 }
Ejemplo n.º 6
0
        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);
                }
            }
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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");
        }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        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"));
        }
Ejemplo n.º 11
0
        //根据客户编码获取账户余额实体
        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);
        }
Ejemplo n.º 13
0
        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();
        }
Ejemplo n.º 14
0
        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");
        }
Ejemplo n.º 15
0
        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();
            }
        }
Ejemplo n.º 16
0
 /// <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");
     }
 }
Ejemplo n.º 17
0
 public override string ToString()
 {
     return($"Status: {Status.ToString()} Balance Amount: {CustomerBalance.ToString()}");
 }
Ejemplo n.º 18
0
        // 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));
        }
Ejemplo n.º 19
0
        public ICollection <BalanceHistory> GetBalanceHistory(CustomerBalance balance)
        {
            var history = context.BalanceHistories.AsNoTracking().Where(s => s.TrackedBalance == balance).OrderBy(s => s.Date).ToList();

            return(history);
        }