public BankAccountMovement(decimal balanceOld, decimal valueCredit, decimal valueDebit, string type, IDates date) { BalanceOld = balanceOld; ValueCredit = valueCredit; ValueDebit = valueDebit; this.type = type; this.dates = date; }
protected int countTakeMonth(IDates date) { return(_movimientos.FindAll(t => t.type == BankAccountMovement.TAKE && t.dates.getMonth() == date.getMonth() && t.dates.getYear() == date.getYear()) .Count); }
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"); }
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); }
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); }
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"); }
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); }
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); }
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"); }
public HomeController(IDates dates) { _dates = dates; }
public string Takes(decimal takeQuantity, IDates date) { return(""); }
abstract public string Consign(decimal takeQuantity, IDates date, string city = "");
abstract public string Takes(decimal value, IDates date);