public Cuenta AddChild(string numero, Moneda moneda, BalanceTypeEnum balance, string nombre, ICuentaFormatProvider formatProvider) { if (!formatProvider.IsValid(numero)) { throw new NumeroCuentaNoValidaException(numero, nameof(numero)); } numero = formatProvider.RemoveFormat(numero); if (formatProvider.GetLevelOf(numero) != (formatProvider.GetLevelOf(Id) + 1)) { throw new NumeroCuentaNoHijaException(numero, Id); } var cuenta = new Cuenta(numero, Id, Tipo, moneda, balance) { Nombre = nombre, Level = this.Level + 1 }; Children.Add(cuenta); HasChildren = true; return(cuenta); }
public Linea(string cuentaId, int numero, string descripcion, string monedaId, BalanceTypeEnum balance, decimal cambio, decimal monto) { CuentaId = Validacion.NotNullOrWhiteSpace(cuentaId, nameof(cuentaId)); Numero = Validacion.Positive(numero, nameof(numero)); Descripcion = descripcion; MonedaId = Validacion.NotNullOrZero(monedaId, nameof(monedaId)); Balance = balance; Cambio = Validacion.Positive(cambio, nameof(cambio)); Monto = Validacion.Positive(monto, nameof(monto)); }
public Linea AddLinea(string cuentaId, string descripcion, string monedaId, BalanceTypeEnum balance, decimal cambio, decimal monto) { if (!Borrador) { throw new AsientoAplicadoExeption(); } int numero = Lineas.Count + 1; Linea linea = new(cuentaId, numero, descripcion, monedaId, balance, cambio, monto); Lineas.Add(linea); return(linea); }
public Cuenta(string id, string parentId, CuentaTypeEnum tipo, Moneda moneda, BalanceTypeEnum balance) : this() { Check.NotNull(moneda, nameof(moneda)); Check.NotNull(id, nameof(id)); Check.NotNull(moneda, nameof(moneda)); Id = id; if (!string.IsNullOrEmpty(parentId)) { ParentId = parentId; } Tipo = tipo; Moneda = moneda; Balance = balance; }
public static string BalanceTypeEnumToString(BalanceTypeEnum input) { return(input.ToString("g")); }
public async Task <Cuenta> CreateCuentaRootAsync(string numero, CuentaTypeEnum tipo, string monedaId, BalanceTypeEnum balance, string nombre) { if (formatProvider.GetLevelOf(numero) != 0) { throw new NumeroCuentaNotRootException(numero, nameof(numero)); } return(await CreateCuentaAsync(numero, tipo, monedaId, balance, nombre)); }
public virtual async Task <Cuenta> CreateCuentaChildAsync(string parent, string numero, string monedaId, BalanceTypeEnum balance, string nombre) { if (await cuentaStore.AnyAsync(x => x.Id == numero)) { throw new CuentaDuplicadaException(numero); } var cuentaParent = await cuentaStore.GetAsync(parent); if (cuentaParent == null) { throw new CuentaNotFountException(parent); } var moneda = await monedaManager.GetAsync(monedaId); return(cuentaParent.AddChild(numero, moneda, balance, nombre, formatProvider)); }
private async Task <Cuenta> CreateCuentaAsync(string numero, CuentaTypeEnum tipo, string monedaId, BalanceTypeEnum balance, string nombre) { numero = CheckNumero(numero, nameof(numero)); if (await cuentaStore.AnyAsync(x => x.Id == numero)) { throw new CuentaDuplicadaException(numero); } var moneda = await monedaManager.GetAsync(monedaId); var cuenta = new Cuenta(numero, null, tipo, moneda, balance) { Nombre = nombre }; await cuentaStore.InsertAsync(cuenta, autoSave : true); return(cuenta); }