コード例 #1
0
 public BankAccountMovement(decimal balanceOld, decimal valueCredit, decimal valueDebit, string type, IDates date)
 {
     BalanceOld  = balanceOld;
     ValueCredit = valueCredit;
     ValueDebit  = valueDebit;
     this.type   = type;
     this.dates  = date;
 }
コード例 #2
0
 protected int countTakeMonth(IDates date)
 {
     return(_movimientos.FindAll(t =>
                                 t.type == BankAccountMovement.TAKE &&
                                 t.dates.getMonth() == date.getMonth() &&
                                 t.dates.getYear() == date.getYear())
            .Count);
 }
コード例 #3
0
        public string Takes(decimal takeQuantity, IDates dates)
        {
            if (takeQuantity <= 0 || takeQuantity > Quota)
            {
                return("Valor del avance no esta permitido");
            }
            var balanceOld = Balance;

            Balance -= takeQuantity;
            _movimientos.Add(new BankAccountMovement(balanceOld, 0, takeQuantity, BankAccountMovement.ADVANCE, dates));
            return($"Se realizo el avance");
        }
コード例 #4
0
        public string Consign(decimal value, IDates dates, string city = "")
        {
            var result = "Se realizo el abono a la cuenta";

            if (value <= 0 || Balance < value)
            {
                return("El valor del abono no esta permitido");
            }
            var balanceOld = Balance;

            Quota  += (value - (Balance - Quota));
            Balance = Quota;
            _movimientos.Add(new BankAccountMovement(balanceOld, value, 0, BankAccountMovement.PAYMENT, dates));
            return(result);
        }
コード例 #5
0
        public override string Takes(decimal takeQuantity, IDates dates)
        {
            var result     = "Se desconto dinero de su saldo actual";
            var balanceOld = Balance;

            Balance -= takeQuantity + ((Balance * 4) / 1000);
            if (Balance >= OverdraftBalance)
            {
                saveMovement(new BankAccountMovement(balanceOld, 0, takeQuantity, BankAccountMovement.COMISION, dates));
                return(result);
            }
            Balance = balanceOld;
            result  = "No puede retirar esta cantidad de dinero";
            return(result);
        }
コード例 #6
0
        public string Consign(decimal value, IDates date, string city = "")
        {
            if (value < 1000000)
            {
                return("Solo se acepta 1M como mínimo");
            }
            if (haveConsign() > 0)
            {
                return("Solo se puede realizar una consignacion");
            }
            var balanceOld = Balance;

            Balance += value;
            saveMovement(new BankAccountMovement(balanceOld, value, 0, BankAccountMovement.CONSIGNCDT, date));
            return("Se realizo la consignacion");
        }
コード例 #7
0
        public override string Consign(decimal consignQuantity, IDates dates, string city = "")
        {
            var result = "No se aceptan menos de 100 mil para cuenta corriente";

            if (consignQuantity < 100000 && NoTieneConsignacion())
            {
                return(result);
            }
            var balanceOld = Balance;

            OverdraftBalance += consignQuantity * OverdraftQuota;
            Balance          += consignQuantity;
            saveMovement(new BankAccountMovement(balanceOld, consignQuantity, 0, BankAccountMovement.CONSIGN, dates));
            result = $"Se consignarón $ {consignQuantity:n2}, su cuenta tiene {Balance:n2}";
            return(result);
        }
コード例 #8
0
        public override string Takes(decimal takeQuantity, IDates dates)
        {
            var result = "No tiene suficiente saldo para realizar un retiro";

            if (Balance < 20000)
            {
                return(result);
            }
            var balanceOld = Balance;

            Balance -= takeQuantity;
            saveMovement(new BankAccountMovement(balanceOld, 0, takeQuantity, BankAccountMovement.TAKE, dates));
            if (countTakeMonth(dates) >= 3)
            {
                balanceOld = Balance;
                Balance   -= 5000;
                saveMovement(new BankAccountMovement(balanceOld, 0, takeQuantity, BankAccountMovement.COMISION, dates));
            }
            result = $"Usted acaba de retirar $ {takeQuantity:n2} de su cuenta de ahorros, Saldo restante {Balance}";
            return(result);
        }
コード例 #9
0
        public override string Consign(decimal consignQuantity, IDates dates, string city)
        {
            if (consignQuantity <= 0)
            {
                return("El valor a consignar es incorrecto");
            }
            if (consignQuantity < 50000 && NoTieneConsignacion())
            {
                return("El valor mínimo de la primera consignación debe ser de $50.000 mil pesos. Su nuevo saldo es $0 pesos");
            }
            var balanceOld = Balance;

            Balance += consignQuantity;
            saveMovement(new BankAccountMovement(balanceOld, consignQuantity, 0, BankAccountMovement.CONSIGN, dates));
            if (string.Equals(city, this.City) == false)
            {
                balanceOld = Balance;
                Balance   -= 10000;
                saveMovement(new BankAccountMovement(balanceOld, consignQuantity, 0, BankAccountMovement.COMISION, dates));
            }
            return($"Su Nuevo Saldo es de ${Balance:n2} pesos m/c");
        }
コード例 #10
0
 public HomeController(IDates dates)
 {
     _dates = dates;
 }
コード例 #11
0
 public string Takes(decimal takeQuantity, IDates date)
 {
     return("");
 }
コード例 #12
0
 abstract public string Consign(decimal takeQuantity, IDates date, string city = "");
コード例 #13
0
 abstract public string Takes(decimal value, IDates date);