Ejemplo n.º 1
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.º 2
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
            }));
        }