示例#1
0
 /// <summary>
 /// Devuelve el campo que se corresponde con la descripción facilitada
 /// o null si no lo encuentra.
 /// </summary>
 /// <param name="descripcion">Descipción del campo.</param>
 /// <returns>Devuelve el campo que se corresponde con la descripción facilitada
 /// o null si no lo encuentra.</returns>
 public RegistroCampo this[string descripcion]
 {
     get
     {
         throw new NotImplementedException(Errores.MostrarMensaje("Conversor.000",
                                                                  "indexador Conversor[string descripcion]"));
     }
 }
示例#2
0
        /// <summary>
        /// Recupera la url donde se encuentra el servicio de la aeat requerido
        /// por la petición y su modelo.
        /// </summary>
        /// <param name="test">True para pruebas y false para produccíón.</param>
        /// <returns>Url del servicio de la aeat correspondiente al modelo de la petición.</returns>
        protected virtual string GeneraEnlace(bool test)
        {
            var enlace = test ? Modelo.Enlaces.UrlPruebas : Modelo.Enlaces.UrlProduccion;

            if (enlace == null)
            {
                throw new Exception(Errores.MostrarMensaje("Peticion.001", $"{Modelo.GetType().Name}"));
            }

            return(enlace);
        }
示例#3
0
        /// <summary>
        /// Inicializa el certificado a utilizar para transmitir la
        /// petición a la aeat.
        /// </summary>
        /// <param name="certRef">Ruta de certificado para la presentación, en caso de que se utilice uno externo.</param>
        /// <param name="certClave">Contraseña del certificado.</param>
        private void InicializaCertificado(string certRef, string certClave)
        {
            _Certificado = Certificado.Cargar(certRef, certClave);

            _CertificadoTitular = Certificado.Titular(_Certificado);

            if (_CertificadoTitular == null)
            {
                throw new Exception(Errores.MostrarMensaje("Peticion.000", $"{_Certificado.Subject}"));
            }
        }
示例#4
0
        /// <summary>
        /// Devuelve el certificado establecido en la configuración.
        /// </summary>
        /// <param name="certRef">>Referencia para la carga del certificado,
        /// según el modo:
        /// <para>AlmacenWindows: Huella del certificado.</para>
        /// <para>Archivo: Ruta al cerfificado.</para>
        /// </param>
        /// <param name="certClave">Contraseña del certificado.</param>
        /// <returns>Devuelve el certificado de la configuración.</returns>
        public static X509Certificate2 Cargar(string certRef = null, string certClave = null)
        {
            bool isWindows = (Environment.OSVersion.Platform == PlatformID.Win32NT) ||
                             (Environment.OSVersion.Platform == PlatformID.Win32S) ||
                             (Environment.OSVersion.Platform == PlatformID.Win32Windows) ||
                             (Environment.OSVersion.Platform == PlatformID.WinCE);

            if (Parametros.Actuales?.Certificados?.CertificadoModo == CertificadosModos.AlmacenWindows && !isWindows)
            {
                throw new PlatformNotSupportedException(
                          Errores.MostrarMensaje("Certificado.000",
                                                 $"'{Parametros.Actuales?.Certificados?.CertificadoModo}'",
                                                 $"{Environment.OSVersion.Platform}")
                          );
            }

            X509Certificate2 certificado = null;

            if (Parametros.Actuales?.Certificados?.CertificadoModo == CertificadosModos.AlmacenWindows)
            {
                certificado = CargarPorHuella(certRef, certClave);

                if (certificado == null)
                {
                    throw new Exception(
                              Errores.MostrarMensaje("Certificado.001",
                                                     $"'{Parametros.Actuales?.Certificados?.HuellaDigital}'")
                              );
                }
            }

            if (Parametros.Actuales?.Certificados?.CertificadoModo == CertificadosModos.Archivo)
            {
                certificado = CargarPorArchivo(certRef, certClave);

                if (certificado == null)
                {
                    throw new Exception(
                              Errores.MostrarMensaje("Certificado.002",
                                                     $"'{Parametros.Actuales?.Certificados?.RutaArchivo}'")
                              );
                }
            }

            if (certificado.NotAfter < DateTime.Now)
            {
                throw new ArgumentNullException(
                          Errores.MostrarMensaje("Certificado.003", $"{certificado.NotAfter}")
                          );
            }

            return(certificado);
        }
示例#5
0
        /// <summary>
        /// Recupera la representación del
        /// segmento de fichero preparada para incorporarse
        /// al mismo.
        /// </summary>
        /// <returns> Representación del
        /// segmento de fichero preparada para incorporarse
        /// al mismo.</returns>
        public override string AFichero()
        {
            string resultado      = $"{_RegistroCampo.Valor}";
            int    largoPendiente = _RegistroCampo.Longitud - resultado.Length;

            if (largoPendiente < 0)
            {
                throw new InvalidCastException(
                          Errores.MostrarMensaje("ConversorTexto.000",
                                                 $"'{resultado}'", $"{resultado.Length}",
                                                 $"'{_RegistroCampo.Descripcion}'", $"{_RegistroCampo.Longitud}")
                          );
            }

            string relleno = null;

            if (largoPendiente > 0)
            {
                relleno = new string(' ', largoPendiente);
            }

            resultado = $"{resultado}{relleno}";

            if (_RegistroCampo.ValorFichero != resultado)
            {
                _RegistroCampo.ValorFichero = resultado;
            }

            if (resultado.Length > _RegistroCampo.Longitud)
            {
                resultado = resultado.Substring(resultado.Length -
                                                _RegistroCampo.Longitud, _RegistroCampo.Longitud);
            }

            return(resultado);
        }
示例#6
0
        /// <summary>
        /// Recupera la representación del
        /// segmento de fichero preparada para incorporarse
        /// al mismo.
        /// </summary>
        /// <returns> Representación del
        /// segmento de fichero preparada para incorporarse
        /// al mismo.</returns>
        public override string AFichero()
        {
            string resultado = null;

            if (_RegistroCampo.Valor == null)
            {
                resultado = new string('0', _RegistroCampo.Longitud);
            }
            else
            {
                decimal numero = Convert.ToDecimal(_RegistroCampo.Valor);

                string cadenaFormato = $"#,##0" +
                                       $"{((_RegistroCampo.Decimales == 0) ? "" : ".")}" +
                                       $"{new string('0', _RegistroCampo.Decimales)}";

                resultado = numero.ToString(cadenaFormato);

                resultado = Regex.Replace(resultado, @"\D", "");

                int    largoPendiente = _RegistroCampo.Longitud - resultado.Length;
                string relleno        = null;

                if (_RegistroCampo.Negativo && numero < 0)
                {
                    largoPendiente = largoPendiente - 1;
                }

                if (largoPendiente > 0)
                {
                    relleno = new string('0', largoPendiente);
                }

                if (_RegistroCampo.Negativo && numero < 0)
                {
                    if (largoPendiente == -1)
                    {
                        throw new Exception(Errores.MostrarMensaje("ConversorNumero.000"));
                    }
                    else
                    {
                        relleno = $"N{relleno}";
                    }
                }

                resultado = $"{relleno}{resultado}";
            }

            if (resultado.Length > _RegistroCampo.Longitud)
            {
                resultado = resultado.Substring(resultado.Length -
                                                _RegistroCampo.Longitud, _RegistroCampo.Longitud);
            }

            if (_RegistroCampo.ValorFichero != resultado)
            {
                _RegistroCampo.ValorFichero = resultado;
            }

            return(resultado);
        }
示例#7
0
 /// <summary>
 /// Compone un empaquetable a partir de su forma
 /// en texto de fichero.
 /// </summary>
 /// <param name="texto">Segmento de texto.</param>
 /// <returns>Objeto IEmpaquetable representado
 /// por el segmento de texto</returns>
 public object DeFichero(string texto)
 {
     throw new NotImplementedException(Errores.MostrarMensaje("Conversor.000",
                                                              "método DeFichero(string texto) de la clase Conversor"));
 }
示例#8
0
 /// <summary>
 /// Recupera la representación del
 /// segmento de fichero preparada para incorporarse
 /// al mismo.
 /// </summary>
 /// <returns> Representación del
 /// segmento de fichero preparada para incorporarse
 /// al mismo.</returns>
 public virtual string AFichero()
 {
     throw new NotImplementedException(Errores.MostrarMensaje("Conversor.000",
                                                              "método AFichero(string texto) de la clase Conversor"));
 }