public virtual void InsertDeposit(Model.Deposit.Deposit deposit)
        {
            if (deposit == null)
            {
                throw new ArgumentNullException("deposit", Resources.ConstDeposit);
            }

            deposit.UpdateDate = DateTime.Now;
            _depositDataAccess.InsertDeposit(deposit);
            deposit.DepositNumber = "D-00" + deposit.DepositId;

            _depositDataAccess.UpdateDeposit(deposit);

            var paymentService = ServiceFactory.GenerateServiceInstance().GeneratePaymentService();
            var payment        =
                new Model.Payments.Payment
            {
                PaymentDate   = deposit.DepositDate,
                PaymentAmount = deposit.AmountPaidInt,
                SalesOrderId  = deposit.DepositId,
                CashierId     = deposit.CashierId
            };

            paymentService.ManagePayment(Resources.OperationRequestInsert, payment);
        }
Example #2
0
        public virtual Model.SaleOrder.SaleOrder GetSaleOrder(Model.Deposit.Deposit deposit)
        {
            if (deposit == null)
            {
                throw new ArgumentNullException("deposit", Resources.MsgInvalidDeposit);
            }

            var saleOrder =
                new Model.SaleOrder.SaleOrder
            {
                AmountPaidInt    = deposit.AmountPaidInt,
                AmountPaidRiel   = deposit.AmountPaidRiel,
                AmountReturnInt  = deposit.AmountReturnInt,
                AmountReturnRiel = deposit.AmountReturnRiel,
                AmountSoldInt    = deposit.AmountSoldInt,
                AmountSoldRiel   = deposit.AmountSoldRiel,
                CardNumber       = deposit.CardNumber,
                CashierId        = deposit.CashierId,
                CurrencyId       = deposit.CurrencyId,
                CustomerId       = deposit.CustomerId,
                DelivererId      = deposit.DelivererId,
                Description      = deposit.Description,
                Discount         = deposit.Discount,
                DiscountTypeId   = deposit.DiscountTypeId,
                ExchangeRate     = deposit.ExchangeRate,
                FkCustomer       = deposit.FkCustomer,
                PaymentTypeId    = deposit.PaymentTypeId,
                ReferenceNum     = deposit.ReferenceNum,
                SaleOrderDate    = deposit.DepositDate,
                SaleOrderTypeId  = deposit.DepositTypeId
            };

            return(saleOrder);
        }
        public virtual Model.Deposit.Deposit RecordDeposit(
            IList depositItemList,
            float totalAmountInt,
            float totalAmountPaidInt,
            float totalAmountPaidRiel,
            Model.Customer.Customer customer,
            string referenceNum,
            float discount,
            bool isReturned)
        {
            if (depositItemList == null)
                throw new ArgumentNullException("depositItemList", Resources.ConstDepositItem);

            var factor = 1;
            if (isReturned)
                factor = -1;

            //Deposit
            var deposit =
                new Model.Deposit.Deposit
                {
                    DepositDate = DateTime.Now,
                    DepositTypeId = isReturned ? 1 : 0,
                    CustomerId = customer.CustomerId,
                    CashierId = AppContext.User.UserId,
                    DelivererId = 0,
                    Description = string.Empty,
                    PaymentTypeId = 0,
                    CurrencyId = 0,
                    ExchangeRate =
                        (AppContext.ExchangeRate == null ? 0 : AppContext.ExchangeRate.ExchangeValue),
                    AmountSoldInt =
                        isReturned ? totalAmountInt : (totalAmountInt - ((totalAmountInt * discount) / 100)),
                    AmountPaidInt = totalAmountPaidInt,
                    AmountPaidRiel = totalAmountPaidRiel,
                    Discount = discount
                };

            deposit.AmountReturnInt = totalAmountPaidInt - deposit.AmountSoldInt;
            deposit.AmountSoldInt *= factor;
            deposit.AmountPaidInt *= factor;
            deposit.AmountReturnInt *= factor;
            deposit.AmountSoldRiel = deposit.AmountSoldInt * deposit.ExchangeRate;
            deposit.AmountReturnRiel = deposit.AmountReturnInt * deposit.ExchangeRate;
            if (customer.FkDiscountCard != null)
            {
                deposit.DiscountTypeId = customer.FkDiscountCard.DiscountCardTypeId;
                deposit.CardNumber = customer.FkDiscountCard.CardNumber;
            }
            deposit.ReferenceNum = referenceNum;

            //Deposit
            InsertDeposit(deposit);

            //Customer
            var customerService = ServiceFactory.GenerateServiceInstance().GenerateCustomerService();
            customer.DebtAmount += deposit.AmountReturnInt;
            if (isReturned)
                customer.PurchasedAmount += deposit.AmountPaidInt;

            customerService.CustomerManagement(
                customer,
                Resources.OperationRequestUpdate);

            //localy update SaleOrder
            deposit.FkCustomer = customer;

            //Deposit item
            if (!isReturned)
            {
                foreach (DepositItem depositItem in depositItemList)
                {
                    if (depositItem.ProductId == 0)
                        continue;

                    depositItem.DepositId = deposit.DepositId;
                    _depositDataAccess.InsertDepositItem(depositItem);
                }
            }
            return deposit;
        }
        public virtual Model.Deposit.Deposit RecordDeposit(
            IList depositItemList,
            float totalAmountInt,
            float totalAmountPaidInt,
            float totalAmountPaidRiel,
            Model.Customer.Customer customer,
            string referenceNum,
            float discount,
            bool isReturned)
        {
            if (depositItemList == null)
            {
                throw new ArgumentNullException("depositItemList", Resources.ConstDepositItem);
            }

            var factor = 1;

            if (isReturned)
            {
                factor = -1;
            }

            //Deposit
            var deposit =
                new Model.Deposit.Deposit
            {
                DepositDate   = DateTime.Now,
                DepositTypeId = isReturned ? 1 : 0,
                CustomerId    = customer.CustomerId,
                CashierId     = AppContext.User.UserId,
                DelivererId   = 0,
                Description   = string.Empty,
                PaymentTypeId = 0,
                CurrencyId    = 0,
                ExchangeRate  =
                    (AppContext.ExchangeRate == null ? 0 : AppContext.ExchangeRate.ExchangeValue),
                AmountSoldInt =
                    isReturned ? totalAmountInt : (totalAmountInt - ((totalAmountInt * discount) / 100)),
                AmountPaidInt  = totalAmountPaidInt,
                AmountPaidRiel = totalAmountPaidRiel,
                Discount       = discount
            };

            deposit.AmountReturnInt  = totalAmountPaidInt - deposit.AmountSoldInt;
            deposit.AmountSoldInt   *= factor;
            deposit.AmountPaidInt   *= factor;
            deposit.AmountReturnInt *= factor;
            deposit.AmountSoldRiel   = deposit.AmountSoldInt * deposit.ExchangeRate;
            deposit.AmountReturnRiel = deposit.AmountReturnInt * deposit.ExchangeRate;
            if (customer.FkDiscountCard != null)
            {
                deposit.DiscountTypeId = customer.FkDiscountCard.DiscountCardTypeId;
                deposit.CardNumber     = customer.FkDiscountCard.CardNumber;
            }
            deposit.ReferenceNum = referenceNum;

            //Deposit
            InsertDeposit(deposit);

            //Customer
            var customerService = ServiceFactory.GenerateServiceInstance().GenerateCustomerService();

            customer.DebtAmount += deposit.AmountReturnInt;
            if (isReturned)
            {
                customer.PurchasedAmount += deposit.AmountPaidInt;
            }

            customerService.CustomerManagement(
                customer,
                Resources.OperationRequestUpdate);

            //localy update SaleOrder
            deposit.FkCustomer = customer;

            //Deposit item
            if (!isReturned)
            {
                foreach (DepositItem depositItem in depositItemList)
                {
                    if (depositItem.ProductId == 0)
                    {
                        continue;
                    }

                    depositItem.DepositId = deposit.DepositId;
                    _depositDataAccess.InsertDepositItem(depositItem);
                }
            }
            return(deposit);
        }
 public virtual void UpdateDeposit(Model.Deposit.Deposit deposit)
 {
     _depositDataAccess.UpdateDeposit(deposit);
 }
Example #6
0
 public virtual void InsertDeposit(Model.Deposit.Deposit deposit)
 {
     InsertObject(deposit);
 }
Example #7
0
 public virtual void UpdateDeposit(Model.Deposit.Deposit deposit)
 {
     UpdateObject(deposit);
 }