Ejemplo n.º 1
0
        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"));
        }
Ejemplo n.º 2
0
        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");
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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
            });
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
        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));
        }
Ejemplo n.º 8
0
        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
            }));
        }
Ejemplo n.º 9
0
 public ActionResult GetPayment(int id)
 {
     return(PartialView("_Payment", SalesOrderPayment.Find(id)));
 }
Ejemplo n.º 10
0
        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
            }));
        }