Ejemplo n.º 1
0
        /// <summary>
        /// Gives money to bank (as deposit or loan payment). Checks inside.
        /// Just wouldn't take money if giver hasn't enough money.
        /// Don't provide variables like Cash as argument!! It would default to zero!
        /// </summary>
        public void ReceiveMoney(Agent giver, MoneyView sum)
        {
            if (giver.PayWithoutRecord(this, sum, Register.Account.BankOperation))
            {
                if (giver.loans.isNotZero())              //has debt (meaning has no deposits)
                {
                    if (sum.isBiggerOrEqual(giver.loans)) // cover debt
                    {
                        MoneyView extraMoney = sum.Copy().Subtract(giver.loans);
                        givenCredits.Subtract(giver.loans);

                        giver.loans.SetZero(); //put extra money on deposit
                        giver.deposits.Set(extraMoney);
                    }
                    else// not cover debt, just decrease loan
                    {
                        giver.loans.Subtract(sum);
                        givenCredits.Subtract(sum);
                    }
                }
                else
                {
                    giver.deposits.Add(sum);
                }
            }
        }