Esempio n. 1
0
    /// <summary>
    /// Servicio que permite AGREGAR la tabla GNB_CONVERSIONES con elementos dentro de un String de tipo XML
    /// </summary>
    /// <param name="mC">Cadena de caracteres de tipo XML</param>
    public void AgregarConversiones(string mC)
    {
        ServicioConversiones pServicioProductos = new ServicioConversiones();                             //servicio que permite comunicar con BD

        XmlSerializer          pSerializador = new XmlSerializer(typeof(ConversionesCollection));         //objeto que recibira los elementos serializados
        StringReader           lector        = new StringReader(mC);                                      //se crea un lector el cual recibira los datos des-serializados
        ConversionesCollection pConversiones = (ConversionesCollection)pSerializador.Deserialize(lector); //se castea el des-serializador y se obtienen los elementos

        //PROVEEDOR DE SIGNO DECIMAL
        NumberFormatInfo proveedorDecimal = new NumberFormatInfo();

        proveedorDecimal.NumberDecimalSeparator = ".";

        for (int indice = 0; indice < pConversiones.Count; indice++)
        {
            GNB_CONVERSIONES pDatos      = new GNB_CONVERSIONES(); //se instancea la tabla que contiene los campos a modificar
            Conversiones     pConversion = pConversiones.ElementAt(indice);

            //ALMACENAMIENTO DE VARIABLES DESERIALIZADAS
            pDatos.ID_CONVERSION = indice + 1;
            pDatos.FROM_CURRENCY = pConversion.From_Currency;
            pDatos.TO_CURRENCY   = pConversion.To_Currency;
            pDatos.RATE          = Convert.ToDecimal(pConversion.Rate, proveedorDecimal);

            //se agregan los productos al servicio
            pServicioProductos.AgregarConversiones(pDatos);
        }
    }
Esempio n. 2
0
    /// <summary>
    /// se OBTIENEN o RECUPERAN todos los elementos dentro de la tabla GNB_CONVERSIONES
    /// </summary>
    /// <returns>candena de caracteres XML que contienen los elementos dentro de la tabla</returns>
    public string ObtenerConversiones()
    {
        ServicioConversiones    pServicioConversiones   = new ServicioConversiones();                  //se crea una instancia del servicio
        List <GNB_CONVERSIONES> pConversiones           = pServicioConversiones.ObtenerConversiones(); //se crea una lista que almacena los elementos dentro de la tabla
        ConversionesCollection  pConversionesCollection = new ConversionesCollection();                //se crea una instancia del la lista donde deberan estar los elementos de la base de datos

        //PROVEEDOR DE SIGNO DECIMAL
        NumberFormatInfo proveedorDecimal = new NumberFormatInfo();

        proveedorDecimal.NumberDecimalSeparator = ".";

        //se realiza un ciclo donde cada elemento se traspasara desde la base de datos hasta el objeto que lo contendra
        //este objeto es la instancia de tipo "collection"
        foreach (GNB_CONVERSIONES indice in pConversiones)
        {
            Conversiones iComun = new Conversiones();
            iComun.Id_Conversion = indice.ID_CONVERSION;
            iComun.From_Currency = indice.FROM_CURRENCY;
            iComun.To_Currency   = indice.TO_CURRENCY;
            iComun.Rate          = Convert.ToDouble(indice.RATE, proveedorDecimal);
            pConversionesCollection.Add(iComun);
        }


        XmlSerializer pSerializador = new XmlSerializer(typeof(ConversionesCollection)); //se crea un serializador de tipo colection (lista)
        StringWriter  escritor      = new StringWriter();                                //se instancia un nuevo escritor de cadenas

        pSerializador.Serialize(escritor, pConversionesCollection);                      //se serializa la cadena
        return(escritor.ToString());                                                     //se retorna el escritor de tipo string
    }
Esempio n. 3
0
    /// <summary>
    /// Servicio que permite ACTUALIZAR la tabla GNB_CONVERSIONES con elementos dentro de un String de tipo XML
    /// </summary>
    /// <param name="mC">Cadena de caracteres de tipo XML</param>
    public void ActualizarConversiones(string mC)
    {
        XmlSerializer        pSerializador         = new XmlSerializer(typeof(Conversiones));         //objeto que recibira los elementos serializados
        StringReader         lector                = new StringReader(mC);                            //se crea un lector el cual recibira los datos des-serializados
        Conversiones         pConversiones         = (Conversiones)pSerializador.Deserialize(lector); //se castea el des-serializador y se obtienen los elementos
        ServicioConversiones pServicioConversiones = new ServicioConversiones();                      //se crea un objeto de clase ServicioProductos
        GNB_CONVERSIONES     pDatos                = new GNB_CONVERSIONES();                          //se instancea la tabla que contiene los campos a modificar


        //PROVEEDOR DE SIGNO DECIMAL
        NumberFormatInfo proveedorDecimal = new NumberFormatInfo();

        proveedorDecimal.NumberDecimalSeparator = ".";

        //ALMACENAMIENTO DE VARIABLES DESERIALIZADAS
        pDatos.ID_CONVERSION = pConversiones.Id_Conversion;
        pDatos.FROM_CURRENCY = pConversiones.From_Currency;
        pDatos.TO_CURRENCY   = pConversiones.To_Currency;
        pDatos.RATE          = Convert.ToDecimal(pConversiones.Rate, proveedorDecimal);

        //se ACTUALIZAN las conversiones al servicio
        pServicioConversiones.ActualizarConversiones(pDatos);
    }
Esempio n. 4
0
    /// <summary>
    /// Permite totalizar todos los elementos en la transaccion del campo "AMOUNT" en EUR haciendo
    /// las conversiones respectivas segun la tabla HEROKU de conversiones
    /// </summary>
    /// <param name="pTransaccionesXML"> cadena de caracteres de tipo XML que contenga transacciones</param>
    /// <returns>el total en formato redondeado "AwayFromZero"</returns>
    public double  TotalizadoEUR(string pTransaccionesXML)
    {
        //segmento para deserializar el XML entrante como parametro
        XmlSerializer     pSerializadorTransac = new XmlSerializer(typeof(TransacCollection));
        StringReader      LectorTransac        = new StringReader(pTransaccionesXML);
        TransacCollection pTransacciones       = (TransacCollection)pSerializadorTransac.Deserialize(LectorTransac);

        //PROVEEDOR DECIMAL
        NumberFormatInfo proveedorDecimal = new NumberFormatInfo();

        proveedorDecimal.NumberDecimalSeparator = "."; //se asigna el punto como separador

        //Servicios necesarios para consultar las conversiones almacenadas en la BD
        ServicioConversiones    ServicioConversiones = new ServicioConversiones();
        List <GNB_CONVERSIONES> ListaConversiones    = new List <GNB_CONVERSIONES>();

        ListaConversiones = ServicioConversiones.ObtenerConversiones(); //se obtienen las conversiones de la BD

        ArrayList TasasDeConeversiones = new ArrayList();               //Arreglo para almacenar solo los RATE de conversiones

        double Totalizar = 0;                                           //variable de totalizado

        try
        {
            //por cada elemento en la tabla de conversion se extraera el campo "RATE"
            foreach (GNB_CONVERSIONES mConversion in ListaConversiones)
            {
                TasasDeConeversiones.Add(Convert.ToDouble(mConversion.RATE, proveedorDecimal));
            }

            //se almacenan las conversiones necesarias

            /* segun el XML  HEROKU
             *  0 CAD - EUR
             *  1 EUR - CAD
             *  2 CAD - USD
             *  3 USD - CAD
             *  4 EUR - AUD
             *  5 AUD - EUR
             */
            double USD_CAD = (double)TasasDeConeversiones[3];
            double CAD_EUR = (double)TasasDeConeversiones[0];
            double AUD_EUR = (double)TasasDeConeversiones[5];

            //por cada elemento en las transacciones seleccionadas se revisara el campo "CURRENCY"
            foreach (Transac pTransaccion in pTransacciones)
            {
                //SI EL CURRENCY ES DISTINTO DE EUR SE APLICA UNA CONVERSION
                switch (pTransaccion.Currency.ToString())
                {
                case "USD":     //pasa por CAD primero luego a EUR
                    Totalizar += (pTransaccion.Amount * USD_CAD) * CAD_EUR;
                    break;

                case "CAD":     //directo a EUR
                    Totalizar += (pTransaccion.Amount * USD_CAD) * CAD_EUR;
                    break;

                case "AUD":     //directo a EUR
                    Totalizar += pTransaccion.Amount * AUD_EUR;
                    break;

                case "EUR":
                    Totalizar += pTransaccion.Amount;
                    break;

                default:
                    break;
                }
            }
        }
        catch (Exception Ex)
        {
        }

        //se realiza un redondeo de tipo "bank" o Gaussiano
        Totalizar = Math.Round(Totalizar, 1, MidpointRounding.AwayFromZero);
        return(Totalizar);
    }
Esempio n. 5
0
    /// <summary>
    /// elimina todos los elementos de la tabla GNB_CONVERSIONES
    /// </summary>
    public void LimpiarConversiones()
    {
        ServicioConversiones pServicioTrnasacciones = new ServicioConversiones();

        pServicioTrnasacciones.LimpiarConversiones(); //limpia todos los campos de la tabla GNB_CONVERSIONES
    }