コード例 #1
0
        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);
        }
コード例 #2
0
 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));
 }
コード例 #3
0
        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);
        }
コード例 #4
0
        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;
        }
コード例 #5
0
 public static string BalanceTypeEnumToString(BalanceTypeEnum input)
 {
     return(input.ToString("g"));
 }
コード例 #6
0
        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));
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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);
        }