public ActionResult ApplyPayment(SalesOrderPayment item) { var entity = new SalesOrderPayment { SalesOrder = SalesOrder.TryFind(item.SalesOrder.Id), Payment = CustomerPayment.TryFind(item.PaymentId), Amount = item.Amount }; var balance = entity.SalesOrder.Balance - GetRefunds(entity.SalesOrder.Id); if (entity.Amount > entity.Payment.Balance) { entity.Amount = entity.Payment.Balance; } balance -= entity.Amount; using (var scope = new TransactionScope()) { if (balance <= 0) { entity.SalesOrder.IsPaid = true; entity.SalesOrder.Update(); } if (entity.Amount > 0) { entity.Create(); } scope.Flush(); } return(PartialView("_ApplyPaymentSuccesful")); }
public ActionResult ApplyPayment(SalesOrderPayment item) { var entity = new SalesOrderPayment { SalesOrder = SalesOrder.TryFind (item.SalesOrder.Id), Payment = CustomerPayment.TryFind (item.PaymentId), Amount = item.Amount }; var balance = entity.SalesOrder.Balance - GetRefunds (entity.SalesOrder.Id); if (entity.Amount > entity.Payment.Balance) { entity.Amount = entity.Payment.Balance; } balance -= entity.Amount; using (var scope = new TransactionScope ()) { if (balance <= 0) { entity.SalesOrder.IsPaid = true; entity.SalesOrder.Update (); } if (entity.Amount > 0) { entity.Create (); } scope.Flush (); } return PartialView ("_ApplyPaymentSuccesful"); }
public async Task <int> SaveSalesOrderPayment(SalesOrderPayment salesOrderPayment) { DynamicParameters parameters = new DynamicParameters(); parameters.Add("@SalesOrderPaymentId", salesOrderPayment.SOPaymentId, System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@PaymentControlNum", salesOrderPayment.SOPaymentControlNumber, System.Data.DbType.Int64, System.Data.ParameterDirection.Input); parameters.Add("@SalesOrderId", salesOrderPayment.SalesOrder.SalesOrderId, System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@BusinessPartnerId", salesOrderPayment.BusinessPartner.BusinessPartnerId ?? "", System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@CurrencyId", salesOrderPayment.Currency.CurrencyId ?? "", System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@PaymentStatus", salesOrderPayment.PaymentStatus ?? "", System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@PaymentDate", salesOrderPayment.PaymentDate, System.Data.DbType.DateTime, System.Data.ParameterDirection.Input); parameters.Add("@DocumentDate", salesOrderPayment.DocumentDate, System.Data.DbType.DateTime, System.Data.ParameterDirection.Input); parameters.Add("@RefDocNumber", salesOrderPayment.RefDocNumber ?? "", System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@PaymentTotal", salesOrderPayment.PaymentTotal, System.Data.DbType.Decimal, System.Data.ParameterDirection.Input); parameters.Add("@Remarks", salesOrderPayment.Remarks ?? "", System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@UserId", salesOrderPayment.UserId ?? "", System.Data.DbType.String, System.Data.ParameterDirection.Input); parameters.Add("@ChangedDate", new DateTime(salesOrderPayment.VersionTimeStamp), System.Data.DbType.DateTime2, System.Data.ParameterDirection.Input); var rowsAffected = await UnitOfWork.Connection.ExecuteAsync( sql : SP_SAVE_SO_PAYMENT, param : parameters, transaction : UnitOfWork.Transaction, commandType : System.Data.CommandType.StoredProcedure); return(rowsAffected); }
public JsonResult AddPayment(int id, int type, decimal amount, string reference) { var dt = DateTime.Now; var session = GetSession (); var store = session.CashDrawer.Store; var sales_order = SalesOrder.Find (id); var employee = CurrentUser.Employee; var item = new SalesOrderPayment { SalesOrder = sales_order, Payment = new CustomerPayment { Creator = employee, CreationTime = dt, Updater = employee, ModificationTime = dt, CashSession = session, /* SalesOrder = sales_order, */ Customer = sales_order.Customer, Method = (PaymentMethod) type, Amount = amount, Date = DateTime.Now, Reference = reference, Currency = sales_order.Currency }, Amount = amount }; // Store and Serial item.Payment.Store = store; try { item.Payment.Serial = (from x in CustomerPayment.Queryable where x.Store.Id == store.Id select x.Serial).Max () + 1; } catch { item.Payment.Serial = 1; } if (item.Amount > item.SalesOrder.Balance) { if (item.Payment.Method == PaymentMethod.Cash) { item.Change = item.Amount - item.SalesOrder.Balance; } else { item.Payment.Amount = item.SalesOrder.Balance; } item.Amount = item.SalesOrder.Balance; } using (var scope = new TransactionScope ()) { item.Payment.Create (); item.CreateAndFlush (); } return Json (new { id = item.Id }); }
public ActionResult ApplyPayment(int id) { var item = new SalesOrderPayment { SalesOrder = SalesOrder.TryFind(id) }; ViewBag.Balance = item.SalesOrder.Balance - GetRefunds(item.SalesOrder.Id); ViewBag.Payments = GetRemainingPayments(item.SalesOrder.Customer.Id, item.SalesOrder.Currency); item.Amount = ViewBag.Balance; return(PartialView("_ApplyPayment", item)); }
public ActionResult ApplyPayment(int id) { var item = new SalesOrderPayment { SalesOrder = SalesOrder.TryFind (id) }; ViewBag.Balance = item.SalesOrder.Balance - GetRefunds (item.SalesOrder.Id); ViewBag.Payments = GetRemainingPayments (item.SalesOrder.Customer.Id, item.SalesOrder.Currency); item.Amount = ViewBag.Balance; return PartialView ("_ApplyPayment", item); }
public ActionResult ReceiveDeliveryPayment(int id) { var item = SalesOrderPayment.Find(id); if (item.Payment.CashSession == null) { item.Payment.CashSession = GetSession(); item.Payment.ModificationTime = DateTime.Now; using (var scope = new TransactionScope()) { item.Payment.UpdateAndFlush(); } } return(PartialView("_Payment", item)); }
public JsonResult RemovePayment(int id) { var item = SalesOrderPayment.Find(id); using (var scope = new TransactionScope()) { PaymentOnDelivery payment = PaymentOnDelivery.Queryable.FirstOrDefault(x => x.CustomerPayment == item.Payment); if (payment != null) { payment.DeleteAndFlush(); } item.DeleteAndFlush(); item.Payment.DeleteAndFlush(); } return(Json(new { id = id, result = true })); }
public ActionResult GetPayment(int id) { return(PartialView("_Payment", SalesOrderPayment.Find(id))); }
public JsonResult AddPayment(int id, int type, decimal amount, string reference, int?fee, bool ondelivery) { var dt = DateTime.Now; var session = GetSession(); var store = session.CashDrawer.Store; var sales_order = SalesOrder.Find(id); var employee = CurrentUser.Employee; var item = new SalesOrderPayment { SalesOrder = sales_order, Payment = new CustomerPayment { Creator = employee, CreationTime = dt, Updater = employee, ModificationTime = dt, CashSession = session, /* SalesOrder = sales_order, */ Customer = sales_order.Customer, Method = (PaymentMethod)type, Amount = amount, Date = DateTime.Now, Reference = reference, Currency = sales_order.Currency }, Amount = amount }; if (fee.HasValue) { item.Payment.ExtraFee = PaymentMethodOption.Find(fee.Value); item.Payment.Commission = item.Payment.ExtraFee.CommissionByManage; } // Store and Serial item.Payment.Store = store; try { item.Payment.Serial = (from x in CustomerPayment.Queryable where x.Store.Id == store.Id select x.Serial).Max() + 1; } catch { item.Payment.Serial = 1; } if (item.Amount > item.SalesOrder.Balance) { if (item.Payment.Method == PaymentMethod.Cash) { item.Change = item.Amount - item.SalesOrder.Balance; } else { item.Payment.Amount = item.SalesOrder.Balance; } item.Amount = item.SalesOrder.Balance; } if (ondelivery && !string.IsNullOrEmpty(sales_order.CustomerShipTo)) { item.Payment.CashSession = null; } using (var scope = new TransactionScope()) { item.Payment.Create(); item.CreateAndFlush(); } return(Json(new { id = item.Id })); }