Exemple #1
0
        public void RentSavePayment()
        {
            RentData       rentData    = new RentData(resultRent._db);
            var            cards       = rentData.returnCard(resultRent.pay_data);
            RentSmsInfo    rentSmS     = new RentSmsInfo();
            List <Payment> payments    = new List <Payment>();
            List <PayType> _payTypes   = rentData.returnPayTypes();
            CardDetailData _cardAmount = rentData.returnCardDetailData(cards.Select(s => s.Id).FirstOrDefault());

            foreach (Card _card in cards)
            {
                var paym = new Payment
                {
                    CardId     = _card.Id,
                    UserId     = resultRent.user_id,
                    Tdate      = DateTime.Now,
                    FileAttach = "",
                    Amount     = 0,
                    PayRent    = resultRent.pay_data.RentAmount,
                    LogCard    = _card.Customer.Name + " " + _card.Customer.LastName + " ის ბარათზე - " + _card.CardNum,
                    LogCardNum = _card.CardNum,
                    LogPayType = _payTypes.FirstOrDefault(p => p.Id == resultRent.pay_data.PayType).Name,
                    PayTypeId  = resultRent.pay_data.PayType
                };
                if (_cardAmount.Amount < 0)
                {
                    if ((_cardAmount.Amount + resultRent.pay_data.RentAmount) > 0)
                    {
                        paym.PayRent       = (_cardAmount.Amount + resultRent.pay_data.RentAmount);
                        paym.Amount        = (_cardAmount.Amount) * (-1);
                        _cardAmount.Amount = (_cardAmount.Amount) * (-1);
                    }
                    else
                    {
                        paym.Amount  = resultRent.pay_data.RentAmount;
                        paym.PayRent = 0;
                    }
                }
                payments.Add(paym);
            }
            rentData.SavePayments(payments.Select(s => s).FirstOrDefault(), rentData.SavePayTransaction(resultRent.pay_data, resultRent.fromPay));
            if (_cardAmount.Amount >= 0)
            {
                SetFinishDate(payments.Select(s => s.CardId).FirstOrDefault());
            }
        }
Exemple #2
0
        public DateTime?SetFinishDate(int card_id)
        {
            RentData       rentData = new RentData(resultRent._db);
            CardDetailData _card    = rentData.returnCardDetailData(card_id);

            if (_card != null)
            {
                decimal balance = Math.Round(_card.PaymentAmount - _card.ChargeAmount, 2);
                decimal amount  = (decimal)_card.RentAmount;
                int     day     = 0;

                if (amount == 0)
                {
                    return(null);
                }
                int service_days = rentData.serviceDay();
                while (true)
                {
                    int     coeff        = service_days;
                    decimal dayly_amount = amount / coeff;
                    dayly_amount -= (dayly_amount * (decimal)_card.Card.Discount / 100);
                    if (balance < dayly_amount)
                    {
                        break;
                    }
                    balance -= dayly_amount;
                    day++;
                }
                FinishDate finishDate = new FinishDate();
                _card.Card.RentFinishDate = finishDate.GenerateFinishDate(_card.CahrgeTime).AddDays(day);

                rentData.saveRentFinisheDate(_card);

                return(_card.Card.FinishDate);
            }

            return(null);
        }