public object crearApertura([FromBody] Apertura obj)
        {
            Configuracion confActiva = ConfiguracionesController.configuracionActiva();
            // se obtiene de configuracion si esta habilitada=1 o deshabilitada=0 la opcion de FactorTC variable
            decimal factorTC = 0;

            if (confActiva.usa_factor_tc)
            {
                DateTime fechaFinMesAnterior = obj.fecha_corte.AddDays(-obj.fecha_corte.Day); // se calcula el ultima dia del mes anterior
                CotizacionesController cot   = new CotizacionesController();
                dynamic tc = cot.cotizacionFecha(obj.fecha_corte);
                dynamic tcFinMesAnterior = cot.cotizacionFecha(fechaFinMesAnterior); // tipos de cambio del ultimo dia del mes anterior
                if (confActiva.moneda_factor_tc == "2")
                {
                    factorTC = (tc.mCompra / tcFinMesAnterior.mCompra) - 1;
                }
                else if (confActiva.moneda_factor_tc == "4")
                {
                    factorTC = (tc.mUFV / tcFinMesAnterior.mUFV) - 1;
                }
                else if (confActiva.moneda_factor_tc == "5")
                {
                    factorTC = (tc.mEuroBS / tcFinMesAnterior.mEuroBS) - 1;
                }
            }

            obj.fecha_corte         = obj.fecha_corte;
            obj.iniciado            = true;
            obj.activo              = true;
            obj.fecha_inicio_envios = DateTime.Now;
            obj.estado              = "iniciado"; // iniciado, detenido, concluido
            obj.id_configuracion    = confActiva.id_configuracion;
            obj.factor_tc           = factorTC;
            obj.creado_en           = DateTime.Now;
            obj.creado_por          = 999;

            con.Query <int>(@"UPDATE aperturas set activo = false  WHERE activo = true");
            con.Close();
            obj.id_apertura = con.Query <int>(@"INSERT INTO aperturas(
                                                    fecha_corte, iniciado, fecha_inicio_envios, fecha_detiene_envios, 
                                                    activo, estado, id_configuracion, factor_tc, creado_por, creado_en)
                                                VALUES ( @fecha_corte, @iniciado, @fecha_inicio_envios, @fecha_detiene_envios, @activo,
                                                @estado, @id_configuracion, @factor_tc, @creado_por,  @creado_en) 
                                                RETURNING id_apertura", obj).Single();
            con.Close();
            return(new
            {
                status = "success",
                mensaje = "creado",
                codigo = "201",
                data = obj
            });
        }
        public object crearApertura([FromBody] Apertura obj)
        {
            try
            {
                // my code
                string token = HttpHelpers.GetTokenFromHeader(HttpContext);
                if (token == "")
                {
                    return(Unauthorized());
                }

                Base helper = new Base(AppSettings, token, HttpContext.Connection.RemoteIpAddress.ToString());

                Configuracion confActiva = ConfiguracionesController.configuracionActiva();
                // se obtiene de configuracion si esta habilitada=1 o deshabilitada=0 la opcion de FactorTC variable
                decimal factorTC = 0;
                if (confActiva.usa_factor_tc)
                {
                    DateTime fechaFinMesAnterior = obj.fecha_corte.AddDays(-obj.fecha_corte.Day); // se calcula el ultima dia del mes anterior
                    //CotizacionesController cot = new CotizacionesController();
                    dynamic tc = CotizacionesController.cotizacionFecha(obj.fecha_corte);
                    dynamic tcFinMesAnterior = CotizacionesController.cotizacionFecha(fechaFinMesAnterior); // tipos de cambio del ultimo dia del mes anterior
                    if (confActiva.moneda_factor_tc == "2")
                    {
                        factorTC = (tc.mCompra / tcFinMesAnterior.mCompra) - 1;
                    }
                    else if (confActiva.moneda_factor_tc == "4")
                    {
                        factorTC = (tc.mUFV / tcFinMesAnterior.mUFV) - 1;
                    }
                    else if (confActiva.moneda_factor_tc == "5")
                    {
                        factorTC = (tc.mEuroBS / tcFinMesAnterior.mEuroBS) - 1;
                    }
                }

                obj.fecha_corte         = obj.fecha_corte;
                obj.iniciado            = true;
                obj.activo              = true;
                obj.fecha_inicio_envios = DateTime.Now;
                obj.estado              = "iniciado"; // iniciado, detenido, concluido
                obj.id_configuracion    = confActiva.id_configuracion;
                obj.factor_tc           = factorTC;
                obj.creado_en           = DateTime.Now;
                obj.creado_por          = helper.UsuarioId;

                con.Query <int>(@"UPDATE aperturas set activo = false  WHERE activo = true");
                con.Close();
                obj.id_apertura = con.Query <int>(@"INSERT INTO aperturas(
                                                    fecha_corte, iniciado, fecha_inicio_envios, fecha_detiene_envios, 
                                                    activo, estado, id_configuracion, factor_tc, creado_por, creado_en)
                                                VALUES ( @fecha_corte, @iniciado, @fecha_inicio_envios, @fecha_detiene_envios, @activo,
                                                @estado, @id_configuracion, @factor_tc, @creado_por,  @creado_en) 
                                                RETURNING id_apertura", obj).Single();
                con.Close();

                helper.AddLog(Log.TipoOperaciones.Alta, typeof(AperturaController), "crearApertura", obj);

                return(new
                {
                    status = "success",
                    mensaje = "creado",
                    codigo = "201",
                    data = obj
                });
            }
            catch (Exception ex)
            {
                return(new
                {
                    status = "error",
                    mensaje = ex.Message
                });
            }
        }