public JsonResult agregar(int?Operador, string Sentido, int?Trafico, decimal Volminimo, decimal Volmaximo, decimal Tarifa, DateTime Viginicio, DateTime Vigfin, int lineaNegocio)
        {
            object respuesta   = null;
            bool   rangoValido = true;

            try
            {
                if (Viginicio > Vigfin)
                {
                    rangoValido = false;
                }
                if (rangoValido == true)
                {
                    var nuevo = new Tarifa();

                    nuevo.Id_OperadorTarifa = Operador;
                    nuevo.SentidoTrafico    = Sentido;
                    nuevo.Id_TraficoSal     = Trafico;
                    nuevo.VolMinimo         = Volminimo;
                    nuevo.VolMaximo         = Volmaximo;
                    nuevo.Tarifa1           = Tarifa;
                    nuevo.VigInicio         = Viginicio;
                    nuevo.VigFin            = Vigfin;
                    nuevo.Activo            = 1;
                    nuevo.Id_LineaNegocio   = lineaNegocio;
                    db.Tarifa.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "Tarifa.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                else
                {
                    respuesta = new { success = true, results = "no", rango = rangoValido };
                }
            }
            catch (Exception ex)
            {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public JsonResult agregar(string Sentido, int Trafico, string TraficoDescripcion, string Cuenta, string Codigo_Material, string Material, int lineaNegocio)
        {
            CuentaResultado cuenta    = db.CuentaResultado.Where(x => x.Trafico_Id == Trafico && x.Sentido == Sentido && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
            object          respuesta = null;

            if (cuenta == null)
            {
                try
                {
                    var nuevo = new CuentaResultado();
                    nuevo.Sentido            = Sentido;
                    nuevo.Trafico_Id         = Trafico;
                    nuevo.TraficoDescripcion = TraficoDescripcion;
                    nuevo.Cuenta             = Cuenta;
                    nuevo.Codigo_Material    = Codigo_Material;
                    nuevo.Material           = Material;
                    nuevo.Activo             = 1;
                    nuevo.Id_LineaNegocio    = lineaNegocio;
                    db.CuentaResultado.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "CuentaResultado.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                catch (Exception ex)
                {
                    respuesta = new { success = false, results = ex.Message };
                }
            }
            else
            {
                respuesta = new
                {
                    success = false,
                    results = "El Tráfico y Sentido actuales ya están dados de alta"
                };
            }

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult modifica(int id, string Nombre)
        {
            object respuesta = null;

            try
            {
                Perfil oPer = db.Perfil.Where(a => a.Id == id).SingleOrDefault();
                oPer.Nombre = Nombre;
                Log log = new Log();
                log.insertaBitacoraModificacion(oPer, "Id", oPer.Id, "Perfil.html", Request.UserHostAddress);

                db.SaveChanges();
                respuesta = new { success = true, results = "ok" };
            }
            catch (Exception ex)
            {
                respuesta = new { success = false, results = ex.Message };
            }

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult agregar(string Sentido, string Direccion, int Grupo, int Operador, DateTime FechaInicio, DateTime FechaFin, decimal TODATA, decimal TOSMSMO, decimal TOVoiceMO, decimal TOVoiceMT, decimal TFDATA, decimal TFSMSMO, decimal TFVoiceMO, decimal TFVoiceMT, int lineaNegocio)
        {
            object respuesta = null;

            try {
                if (FechaInicio < FechaFin)
                {
                    var nuevo = new TarifaRoaming();
                    nuevo.Sentido         = Sentido;
                    nuevo.Direccion       = Direccion;
                    nuevo.Code            = Grupo;
                    nuevo.Id_Operador     = Operador;
                    nuevo.FechaInicio     = FechaInicio;
                    nuevo.FechaFin        = FechaFin;
                    nuevo.ToData          = TODATA;
                    nuevo.ToSMSMo         = TOSMSMO;
                    nuevo.ToVoiceMo       = TOVoiceMO;
                    nuevo.ToVoiceMt       = TOVoiceMT;
                    nuevo.TfData          = TFDATA;
                    nuevo.TfSMSMo         = TFSMSMO;
                    nuevo.TfVoiceMo       = TFVoiceMO;
                    nuevo.TfVoiceMt       = TFVoiceMT;
                    nuevo.Activo          = 1;
                    nuevo.Id_LineaNegocio = lineaNegocio;
                    db.TarifaRoaming.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "TarifaRoaming.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                else
                {
                    respuesta = new { success = true, results = "no" }
                };
            } catch (Exception ex) {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="objeto"></param>
        /// <param name="accion"></param>
        /// <param name="pantalla"></param>
        public void insertaNuevoOEliminado(object objeto, string accion, string pantalla, string ip)
        {
            StringBuilder valores = new StringBuilder();
            string        campos  = string.Empty;
            string        usuario = string.Empty;
            HttpContext   context = HttpContext.Current;

            if (context.Session["userName"] != null)
            {
                usuario = context.Session["userName"].ToString();
            }

            PropertyInfo[] listaProperties = objeto.GetType().GetProperties();

            foreach (PropertyInfo item in listaProperties)
            {
                if (campos == string.Empty)
                {
                    campos = item.Name;
                    valores.Append((item.GetValue(objeto) != null ? item.GetValue(objeto).ToString() : string.Empty));
                }
                else
                {
                    campos += string.Concat("|", item.Name);
                    valores.Append(string.Concat("|", (item.GetValue(objeto) != null ? item.GetValue(objeto).ToString() : string.Empty)));
                }
            }

            try
            {
                using (ICPruebaEntities db = new ICPruebaEntities())
                {
                    LogActualizaciones reg = new LogActualizaciones();
                    reg.NombrePantalla    = pantalla;
                    reg.ColumnaModificada = campos;
                    reg.Valor_Nuevo       = valores.ToString();
                    reg.Valor_Anterior    = string.Empty;
                    reg.Fecha             = DateTime.Now;
                    reg.Direccion_IP      = ip;
                    reg.Accion            = accion;
                    reg.Activo            = 1;
                    reg.Usuario           = usuario;
                    db.LogActualizaciones.Add(reg);
                    db.SaveChanges();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        public bool inserta(List <TarifaRoaming> lista)
        {
            bool exito = true;

            object respuesta = null;
            int    limite    = lista.Count();

            using (ICPruebaEntities db = new ICPruebaEntities())
            {
                try
                {
                    foreach (var tarifa in lista)
                    {
                        var oTarifa = new TarifaRoaming();
                        oTarifa.Sentido         = tarifa.Sentido;
                        oTarifa.Direccion       = tarifa.Direccion;
                        oTarifa.Code            = tarifa.Code;
                        oTarifa.Id_Operador     = tarifa.Id_Operador;
                        oTarifa.FechaInicio     = tarifa.FechaInicio;
                        oTarifa.FechaFin        = tarifa.FechaFin;
                        oTarifa.ToData          = tarifa.ToData;
                        oTarifa.ToSMSMo         = tarifa.ToSMSMo;
                        oTarifa.ToVoiceMo       = tarifa.ToVoiceMo;
                        oTarifa.ToVoiceMt       = tarifa.ToVoiceMt;
                        oTarifa.TfData          = tarifa.TfData;
                        oTarifa.TfSMSMo         = tarifa.TfSMSMo;
                        oTarifa.TfVoiceMo       = tarifa.TfVoiceMo;
                        oTarifa.TfVoiceMt       = tarifa.TfVoiceMt;
                        oTarifa.iva             = tarifa.iva;
                        oTarifa.Activo          = 1;
                        oTarifa.Id_LineaNegocio = 1;

                        db.TarifaRoaming.Add(oTarifa);
                        Log log = new Log();
                        log.insertaNuevoOEliminado(oTarifa, "Nuevo", "TarifaRoaming.html", Request.UserHostAddress);

                        db.SaveChanges();
                    }

                    respuesta = new { success = true, results = "ok" };
                }

                catch (Exception e)
                {
                    respuesta = new { success = false, results = e.Message };
                    exito     = false;
                }
            }

            return(exito);
        }
        public JsonResult agregarTarifa_Fee(int Sociedad, int Grupo, int Trafico, string Fee, DateTime Fecha_Inicio, DateTime Fecha_Fin, decimal Tarifa, decimal Porcentaje, int lineaNegocio)
        {
            object respuesta = null;

            try
            {
                var nuevo = new Tarifa_Fee();

                nuevo.Id_Sociedad     = Sociedad;
                nuevo.Id_Grupo        = Grupo;
                nuevo.Id_Trafico      = Trafico;
                nuevo.Fee             = Fee;
                nuevo.Fecha_Inicio    = Fecha_Inicio;
                nuevo.Fecha_Fin       = Fecha_Fin;
                nuevo.Tarifa          = Tarifa;
                nuevo.Porcentaje      = Porcentaje;
                nuevo.Activo          = 1;
                nuevo.Id_LineaNegocio = lineaNegocio;

                db.Tarifa_Fee.Add(nuevo);

                Log log = new Log();
                log.insertaNuevoOEliminado(nuevo, "Nuevo", "Tarifa_Fee.html", Request.UserHostAddress);

                db.SaveChanges();
                respuesta = new { success = true, results = "ok" };
                //}
                //    else
                //    {
                //    respuesta = new { success = true, results = "no", mensaje = noEncontrados.TrimEnd(',') };
                //}
            }
            catch (Exception ex)
            {
                respuesta = new { success = false, results = ex.Message.ToString() };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult agregarSociedad(string Abreviatura, string Nombre, string Id_SAP, string Sociedad_SAP, string Id_Sociedad, int lineaNegocio)
        {
            object respuesta = null;

            try
            {
                Sociedad sociedad = db.Sociedad.Where(x => x.Id_Sociedad == Id_Sociedad && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();

                if (sociedad == null)
                {
                    var nuevo = new Sociedad();

                    nuevo.AbreviaturaSociedad = Abreviatura;
                    nuevo.NombreSociedad      = Nombre;
                    nuevo.Id_SAP          = Id_SAP;
                    nuevo.Sociedad_SAP    = Sociedad_SAP;
                    nuevo.Id_Sociedad     = Id_Sociedad;
                    nuevo.Activo          = 1;
                    nuevo.Id_LineaNegocio = lineaNegocio;
                    db.Sociedad.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "Sociedad.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                else
                {
                    respuesta = new { success = true, results = "no", dato = Id_Sociedad };
                }
            }
            catch (Exception ex)
            {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult agregar(int?Operador, int Trafico, string TraficoDescripcion, int lineaNegocio)
        {
            BonoTrafico bonoT     = db.BonoTrafico.Where(x => x.Id_Operador == Operador && x.Trafico_Id == Trafico && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
            object      respuesta = null;

            if (bonoT == null)
            {
                try
                {
                    var nuevo = new BonoTrafico();
                    nuevo.Id_Operador        = Operador;
                    nuevo.Trafico_Id         = Trafico;
                    nuevo.TraficoDescripcion = TraficoDescripcion;
                    nuevo.Activo             = 1;
                    nuevo.Id_LineaNegocio    = lineaNegocio;
                    db.BonoTrafico.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "BonoTrafico.html", Request.UserHostAddress);
                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                catch (Exception ex)
                {
                    respuesta = new { success = false, results = ex.Message };
                }
            }
            else
            {
                respuesta = new
                {
                    success = false,
                    results = "El Operador y Tráfico actual ya están dados de alta"
                };
            }

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult agregarEmpresa(string Empresa_Id, string Abreviatura, string Nombre, int lineaNegocio)
        {
            object respuesta = null;

            try
            {
                //Aquí busca el id que estás agregando
                EmpresaIC oEmpresa = db.EmpresaIC.Where(x => x.Id_Empresa == Empresa_Id && x.Activo == 1).SingleOrDefault();
                //valida si existe ese id, si la respuesta es nula te deja agregarlo
                if (oEmpresa == null)
                {
                    var nuevo = new EmpresaIC();
                    nuevo.Id_Empresa      = Empresa_Id;
                    nuevo.Abreviatura     = Abreviatura;
                    nuevo.Nombre_Empresa  = Nombre;
                    nuevo.Activo          = 1;
                    nuevo.Id_LineaNegocio = lineaNegocio;
                    db.EmpresaIC.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "EmpresaIC.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                // si no es nulo, quiere decir que ya existe ese folio y no lo agrega
                else
                {
                    respuesta = new { success = true, results = "no", dato = Empresa_Id };
                }
            }
            catch (Exception ex)
            {
                respuesta = new { success = false, result = ex.Message.ToString() };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #11
0
        public JsonResult agregarTrafico(string Sentido, string Descripcion, int Id_Servicio, string Id_TraficoTR, int lineaNegocio)
        {
            object respuesta = null;

            try
            {
                var nuevo = new Trafico();
                //Busca el Id_Servicio que se desea ingresar
                Servicio oServicio = db.Servicio.Where(x => x.Id == Id_Servicio && x.Activo == 1).SingleOrDefault();
                //Evalua si se encontro el servicio
                if (oServicio != null)
                {
                    nuevo.Sentido         = Sentido;
                    nuevo.Descripcion     = Descripcion;
                    nuevo.Id_ServicioTR   = oServicio.Id;
                    nuevo.Id_TraficoTR    = Id_TraficoTR;
                    nuevo.Activo          = 1;
                    nuevo.Id_LineaNegocio = lineaNegocio;
                    db.Trafico.Add(nuevo);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(nuevo, "Nuevo", "Trafico.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                }
                else
                {
                    respuesta = new { success = true, results = "no", dato = Id_Servicio }
                };
            }
            catch (Exception ex)
            {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public void SavePXQCostos(List <PXQCostosLDI> lista)
        {
            using (TransactionScope scope = new TransactionScope())
            {
                foreach (var elemento in lista)
                {
                    db.PXQCostosLDI.Add(elemento);
                    Log log = new Log();
                    log.insertaNuevoOEliminado(elemento, "Nuevo", "PXQCostosLDI.html", Request.UserHostAddress);

                    db.SaveChanges();
                }
                scope.Complete();
            }
        }
        //Borrar
        public JsonResult borrarCostoFC(string strID)
        {
            int Id = 0;

            strID = strID.TrimEnd(',');
            string strmsg = "ok";//string strSalto = "</br>";
            bool   blsucc = true;
            object respuesta;

            try
            {
                string[] Ids = strID.Split(',');

                for (int i = 0; i < Ids.Length; i++)
                {
                    if (Ids[i].Length != 0)
                    {
                        Id = int.Parse(Ids[i]);//string strresp_val = funGralCtrl.ValidaRelacion("CostoFC", Id);


                        CostoFR CostoFC = db.CostoFR.Where(x => x.Id == Id).SingleOrDefault();
                        CostoFC.Activo = 0;
                        Log log = new Log();
                        log.insertaNuevoOEliminado(CostoFC, "Eliminado", "CostoFR.html", Request.UserHostAddress);

                        db.SaveChanges();
                    }
                }
                respuesta = new { success = blsucc, results = strmsg };
            }
            catch (Exception ex)
            {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public void GuardarElementos <T>(IEnumerable <T> lista) where T : class
        {
            using (ICPruebaEntities db = new ICPruebaEntities())
            {
                using (DbContextTransaction trans = db.Database.BeginTransaction())
                {
                    db.Configuration.AutoDetectChangesEnabled = false;

                    foreach (var el in lista)
                    {
                        db.Set <T>().Add(el);
                    }

                    db.SaveChanges();
                    trans.Commit();
                }
            }
        }
Пример #15
0
        public object Guardar(int Id, string Id_Documento, string Id_Servicio, string Nombre_Documento, string Nombre_Archivo, string Path_Url, int diaCorte, int horaCorte, string Caracter_Separador, string Caracter_Fin_Linea, int Activo)
        {
            object respuesta = null;

            try
            {
                parametrosCargaDocumento oCatDocCarga = db.parametrosCargaDocumento.Where(a => a.Id == Id).SingleOrDefault();

                oCatDocCarga.idDocumento       = Id_Documento;
                oCatDocCarga.servicio          = Id_Servicio;
                oCatDocCarga.nombreDocumento   = Nombre_Documento;
                oCatDocCarga.nombreArchivo     = Nombre_Archivo;
                oCatDocCarga.pathURL           = Path_Url;
                oCatDocCarga.caracterSeparador = Caracter_Separador;
                oCatDocCarga.caracterFinLinea  = Caracter_Fin_Linea;
                oCatDocCarga.diaCorte          = diaCorte;
                oCatDocCarga.horaCorte         = horaCorte;
                oCatDocCarga.activo            = 1;
                Log log = new Log();
                log.insertaBitacoraModificacion(oCatDocCarga, "Id", oCatDocCarga.Id, "parametrosCargaDocumento.html", Request.UserHostAddress);

                db.SaveChanges();

                respuesta = new { success = true, results = "ok" };
            }
            catch (Exception ex)
            {
                respuesta = new
                {
                    success = false,
                    results = "Un error ocurrió mientras se realizaba la petición.\n Error: " + ex.Message.ToString()
                };
            }

            return(respuesta);
        }
        public JsonResult ModificarDIngreso(int lineaNegocio, int Id, DateTime mes, int movimiento, int moneda, string servicio, int grupo, string operador, string deudor, string trafico, decimal segundos, decimal min_fact, decimal tarifa_ext, decimal tarifa_final, decimal cantidad, decimal importe_ingreso, string no_factura, decimal monto_fact, decimal prov_nc, decimal ajuste, decimal nc_emitida, decimal saldo_prov, string motivo_ajuste, string periodo_ajuste, DateTime fecha_ajuste, string responsable_ajuste, string sociedad_sap, string sociedad, string nombre_empresa)
        {
            object respuesta = null;

            string noEncontrados = "";


            bool valido = false;

            try {
                Movimiento     oMovimiento = db.Movimiento.Where(x => x.Id == movimiento && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                Moneda         oMoneda     = db.Moneda.Where(x => x.Id == moneda && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                Servicio       oServicio   = db.Servicio.Where(x => x.Id_Servicio == servicio && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                Grupo          oGrupo      = db.Grupo.Where(x => x.Id == grupo && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                Operador       oOperador   = db.Operador.Where(x => x.Id_Operador == operador && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                Deudor         oDeudor     = db.Deudor.Where(x => x.Deudor1 == deudor && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                Trafico        oTrafico    = db.Trafico.Where(x => x.Id_TraficoTR == trafico && x.Activo == 1 && x.Id_LineaNegocio == lineaNegocio).SingleOrDefault();
                DataIngresoLDI oDI         = db.DataIngresoLDI.Where(a => a.id == Id).SingleOrDefault();

                if (oMovimiento == null)
                {
                    noEncontrados = noEncontrados + "Sociedad " + sociedad + ",";
                }
                if (oMoneda == null)
                {
                    noEncontrados = noEncontrados + "Tráfico: " + trafico + ",";
                }
                if (oServicio == null)
                {
                    noEncontrados = noEncontrados + "Servico: " + servicio + ",";
                }
                if (oGrupo == null)
                {
                    noEncontrados = noEncontrados + "Grupo: " + grupo + ",";
                }
                if (oOperador == null)
                {
                    noEncontrados = noEncontrados + "Sociedad " + operador + ",";
                }
                if (oDeudor == null)
                {
                    noEncontrados = noEncontrados + "Tráfico: " + deudor + ",";
                }

                if (oMovimiento != null && oTrafico != null && oServicio != null && oMoneda != null && oGrupo != null && oOperador != null && oDeudor != null && valido == true)
                {
                    oDI.mes         = mes;
                    oDI.id_moneda   = oMoneda.Id;
                    oDI.id_servicio = oServicio.Id;
                    oDI.id_grupo    = oGrupo.Id;
                    oDI.id_operador = oOperador.Id;
                    oDI.id_trafico  = oTrafico.Id;
                    oDI.segundos    = segundos;
                    //oDI.llamadas = llamadas;
                    oDI.importe_ingreso       = importe_ingreso;
                    oDI.tarifa_ext            = tarifa_ext;
                    oDI.id_deudor             = oDeudor.Id;
                    oDI.min_fact              = min_fact;
                    oDI.cantidad              = cantidad;
                    oDI.no_factura_referencia = no_factura;
                    oDI.monto_facturado       = monto_fact;
                    Log log = new Log();
                    log.insertaBitacoraModificacion(oDI, "id", oDI.id, "DataIngresoLDI.html", Request.UserHostAddress);

                    db.SaveChanges();

                    respuesta = new { success = true, results = "ok" };
                }

                respuesta = new { success = true, results = "" };
            } catch (Exception ex) {
                respuesta = new { success = false, results = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #17
0
        public JsonResult CargarCSV(HttpPostedFileBase archivoCSV, int lineaNegocio)
        {
            List <string>        listaErrores = new List <string>();
            var                  hoy = DateTime.Now;
            IEnumerable <string> lineas = null;
            object               respuesta = null;
            string               mensajeExistencia = "";
            int                  totalProcesados = 0;
            int                  lineaActual = 1;
            bool                 status = false;
            string               ope, fact;
            string               exception = "Error, se presento un error inesperado.";

            try {
                List <string> csvData = new List <string>();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(archivoCSV.InputStream, Encoding.Default)) {
                    while (!reader.EndOfStream)
                    {
                        csvData.Add(reader.ReadLine());
                    }
                }
                lineas = csvData.Skip(1);

                string pd = lineas.First();
                pd = pd.Replace('%', ' ');
                var             pdSplit          = pd.Split(';');
                DateTime        periodoDocumento = FNCGrales.ConvierteFecha(pdSplit[1], char.Parse("-"), "DMY");
                documentosCosto docCosto         = db.documentosCosto.Where(x => x.fechaContable == periodoDocumento && x.activo == 1 && x.lineaNegocio == lineaNegocio).FirstOrDefault();
                if (docCosto != null)
                {
                    mensajeExistencia = "Los documentos del periodo " + periodoDocumento.Year + " " + meses[periodoDocumento.Month] + " se han actualizado";
                    db.sp_BorrarCargas_Delete("documentosCosto", periodoDocumento, lineaNegocio);
                }

                using (TransactionScope scope = new TransactionScope()) {
                    foreach (string ln in lineas)
                    {
                        string linea      = ln.Replace('%', ' ');
                        var    lineaSplit = linea.Split(';');
                        ++lineaActual;
                        if (lineaSplit.Count() == 26)
                        {
                            documentosCosto documento = new documentosCosto();
                            try {
                                ope  = lineaSplit[6];
                                fact = lineaSplit[19];

                                documentosCosto veriDocumento = db.documentosCosto.Where(x => x.operador == ope && x.factura == fact && x.activo == 1 && x.lineaNegocio == lineaNegocio).FirstOrDefault();
                                if (veriDocumento != null)
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El Operador y Factura actual ya estan dados de alta.");
                                    continue;
                                }

                                if (lineaSplit[0] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Año es obligatorio.");
                                    continue;
                                }
                                documento.ano = new DateTime(Int32.Parse(lineaSplit[0]), 01, 01);

                                if (lineaSplit[1] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Fecha Contable es obligatorio.");
                                    continue;
                                }
                                DateTime dtFecha = FNCGrales.ConvierteFecha(lineaSplit[1], '-', "DMY");

                                documento.fechaContable = dtFecha;

                                if (lineaSplit[2] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Fecha Consumo es obligatorio.");
                                    continue;
                                }

                                dtFecha = FNCGrales.ConvierteFecha("01-" + lineaSplit[2], '-', "DMY");
                                documento.fechaConsumo = dtFecha;
                                if (documento.fechaConsumo.Month >= hoy.Month && documento.fechaConsumo.Year == hoy.Year)
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": No se permite cargar facturas con Mes Consumo que sean del mes en curso en adelante.");
                                    continue;
                                }

                                if (lineaSplit[3] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Compañia es obligatorio.");
                                    continue;
                                }
                                documento.compania = lineaSplit[3];
                                documento.servicio = lineaSplit[4];

                                if (lineaSplit[5] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Grupo es obligatorio.");
                                    continue;
                                }
                                documento.grupo = lineaSplit[5];

                                if (lineaSplit[6] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Id Operador es obligatorio.");
                                    continue;
                                }
                                documento.operador       = lineaSplit[6];
                                documento.nombreOperador = lineaSplit[7];

                                if (lineaSplit[8] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Acreedor es obligatorio.");
                                    continue;
                                }
                                documento.acreedor = lineaSplit[8];

                                if (lineaSplit[9] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Código Material es obligatorio.");
                                    continue;
                                }
                                documento.codigoMaterial = lineaSplit[9];
                                documento.trafico        = lineaSplit[10];

                                if (lineaSplit[11] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Monto IVA es obligatorio.");
                                    continue;
                                }
                                documento.montoIva = decimal.Parse(lineaSplit[11]);

                                if (lineaSplit[12] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo IVA es obligatorio.");
                                    continue;
                                }
                                documento.iva = decimal.Parse(lineaSplit[12]);

                                if (lineaSplit[13] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Moneda es obligatorio.");
                                    continue;
                                }
                                documento.moneda = lineaSplit[13];

                                if (lineaSplit[14] == null || lineaSplit[14] == "")
                                {
                                    documento.minutos = null;
                                }
                                else
                                {
                                    documento.minutos = decimal.Parse(lineaSplit[14]);
                                }

                                if (lineaSplit[15] == null || lineaSplit[15] == "")
                                {
                                    documento.tarifa = null;
                                }
                                else
                                {
                                    documento.tarifa = decimal.Parse(lineaSplit[15]);
                                }

                                if (lineaSplit[16] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Monto es obligatorio.");
                                    continue;
                                }
                                documento.monto = decimal.Parse(lineaSplit[16]);

                                if (lineaSplit[17] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Monto Facturado es obligatorio.");
                                    continue;
                                }
                                documento.montoFacturado = decimal.Parse(lineaSplit[17]);

                                if (lineaSplit[18] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Fecha Factura es obligatorio.");
                                    continue;
                                }
                                documento.fechaFactura = DateTime.ParseExact(lineaSplit[18], "dd/MM/yyyy", new CultureInfo("en-US"), DateTimeStyles.None);

                                if (lineaSplit[19] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Factura es obligatorio.");
                                    continue;
                                }
                                documento.factura = lineaSplit[19];

                                if (lineaSplit[20] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Tipo Cambio es obligatorio.");
                                    continue;
                                }
                                documento.tipoCambio = decimal.Parse(lineaSplit[20]);

                                if (lineaSplit[21] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Monto MXP es obligatorio.");
                                    continue;
                                }
                                documento.montoMXP       = decimal.Parse(lineaSplit[21]);
                                documento.cuentaContable = lineaSplit[22];

                                var result = db.spValidaDocumentosCost(documento.compania, documento.servicio,
                                                                       documento.grupo, documento.acreedor, documento.operador, documento.trafico,
                                                                       documento.moneda, documento.cuentaContable, documento.codigoMaterial, lineaNegocio
                                                                       ).ToList();

                                documento.idSociedad        = result[0].idSociedad;
                                documento.idServicio        = result[0].idServicio;
                                documento.idGrupo           = result[0].idGrupo;
                                documento.idOperador        = result[0].idOperador;
                                documento.idAcreedor        = result[0].idAcreedor;
                                documento.idTrafico         = result[0].idTrafico;
                                documento.idMoneda          = result[0].idMoneda;
                                documento.idCuentaResultado = result[0].idCuentaResultado;

                                if (result[0].idStatus == 1)
                                {
                                    documento.activo = 1;
                                    totalProcesados++;
                                }
                                else
                                {
                                    documento.activo = 0;
                                    var cadena = result[0].cadenaResultado;
                                    listaErrores.Add("Línea " + lineaActual + ": Error en la carga, no se encontraron coincidencias" +
                                                     " en los siguientes catálogo(s)" + cadena.Remove(cadena.Length - 1) + ".");
                                }

                                if (lineaSplit[23] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Clase Documento es obligatorio.");
                                    continue;
                                }
                                documento.claseDocumento = lineaSplit[23];

                                if (lineaSplit[24] == "")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": El campo Clase Documento SAP es obligatorio.");
                                    continue;
                                }
                                documento.claseDocumentoSAP = lineaSplit[24];
                                // Se agrega en el Sprint 7
                                documento.numDocumentoPF = lineaSplit[25];
                                documento.estatus        = "PENDIENTE DE PROCESAR";
                                documento.lineaNegocio   = lineaNegocio;
                                db.documentosCosto.Add(documento);
                                Log log = new Log();
                                log.insertaNuevoOEliminado(documento, "Nuevo", "documentosCosto.html", Request.UserHostAddress);
                            } catch (FormatException e) {
                                if (e.Message == "String was not recognized as a valid DateTime.")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo de Fecha con formato erróneo.");
                                }
                                else
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo con formato erróneo.");
                                }
                            } catch (Exception) {
                                listaErrores.Add("Línea " + lineaActual + ": Error desconocido. ");
                            }
                        }
                        else
                        {
                            listaErrores.Add("Línea " + lineaActual + ": Número de campos insuficiente.");
                        }
                    }
                    db.SaveChanges();
                    scope.Complete();
                    exception = "Datos cargados con éxito";
                    status    = true;
                }
            } catch (FileNotFoundException) {
                exception = "El archivo Selecionado aún no existe en el Repositorio.";
                status    = false;
            } catch (UnauthorizedAccessException) {
                exception = "No tiene permiso para acceder al archivo actual.";
                status    = false;
            } catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
            {
                exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                status    = false;
            } catch (TransactionAbortedException) {
                exception = "Transacción abortada. Se presentó un error.";
                status    = false;
            } catch (Exception err) {
                exception = "Error desconocido. " + err.InnerException.ToString();
                status    = false;
            } finally {
                respuesta = new
                {
                    success = true,
                    results = listaErrores,
                    mensaje = exception,
                    mensajeExistencia,
                    totalProcesados = totalProcesados,
                    status          = status
                };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #18
0
        /// <summary>
        /// Inserta en bitacora la modificacion que se ha realizado
        /// </summary>
        /// <param name="objeto">Objeto entity que se modifica</param>
        /// <param name="campoID">Campo id de la tabla que se modifica</param>
        /// <param name="id">Id del registro que se modifica</param>
        /// <param name="pantalla">Pantalla que se modifica</param>
        public void insertaBitacoraModificacion(object objeto, string campoID, int id, string pantalla, string ip)
        {
            Type   tipe  = objeto.GetType();
            string campo = string.Empty;
            string valor = string.Empty;

            PropertyInfo[] listaProperties   = objeto.GetType().GetProperties();
            string         valorActual       = string.Empty;
            bool           existeCambio      = false;
            StringBuilder  valorModificado   = new StringBuilder();
            StringBuilder  valorAnterior     = new StringBuilder();
            string         camposModificados = string.Empty;
            string         nombreTabla       = (tipe.BaseType.Name == "Object" ? tipe.Name : tipe.BaseType.Name);
            string         consulta          = string.Concat("SELECT * FROM ", nombreTabla, " WHERE " + campoID + "=", id.ToString());
            string         usuario           = string.Empty;
            HttpContext    context           = HttpContext.Current;

            if (context.Session["userName"] != null)
            {
                usuario = context.Session["userName"].ToString();
            }
            bool nollave = (tipe.BaseType.Name == "Object" ? true : false);

            using (SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["sqlServer"].ToString()))
            {
                try {
                    con.Open();
                    SqlCommand    comand = new SqlCommand(consulta, con);
                    SqlDataReader reader = comand.ExecuteReader();
                    while (reader.Read())
                    {
                        foreach (PropertyInfo pro in listaProperties)
                        {
                            if (pro.DeclaringType.Name == nombreTabla)
                            {
                                string Nombrecampo = string.Empty;
                                if (pro.Name == "Servicio1")
                                {
                                    Nombrecampo = "Servicio";
                                }
                                else if (pro.Name == "Tarifa1")
                                {
                                    Nombrecampo = "Tarifa";
                                }
                                else if (pro.Name == "Acreedor1")
                                {
                                    Nombrecampo = "Acreedor";
                                }
                                else if (pro.Name == "Usuario1")
                                {
                                    Nombrecampo = "Usuario";
                                }
                                else if (pro.Name == "Concepto1")
                                {
                                    Nombrecampo = "Concepto";
                                }
                                else if (pro.Name == "Grupo1")
                                {
                                    Nombrecampo = "Grupo";
                                }
                                else if (pro.Name == "Moneda1")
                                {
                                    Nombrecampo = "Moneda";
                                }
                                else
                                {
                                    Nombrecampo = pro.Name;
                                }

                                valorActual = (reader[Nombrecampo] != null ? reader[Nombrecampo].ToString() : string.Empty);
                                //valor = pro.GetValue(objeto).ToString();
                                if (!valorActual.Equals((pro.GetValue(objeto) != null ? pro.GetValue(objeto).ToString() : string.Empty)))
                                {
                                    if (camposModificados.Equals(string.Empty))
                                    {
                                        camposModificados = pro.Name;
                                        valorAnterior.Append(valorActual);
                                        valorModificado.Append(pro.GetValue(objeto) != null ? pro.GetValue(objeto).ToString() : string.Empty);
                                    }
                                    else
                                    {
                                        camposModificados += "|" + pro.Name;
                                        valorAnterior.Append("|" + valorActual);
                                        valorModificado.Append("|" + (pro.GetValue(objeto) != null ? pro.GetValue(objeto).ToString() : string.Empty));
                                    }

                                    existeCambio = true;
                                }
                            }
                        }
                    }
                }
                catch (Exception ex) {
                    throw ex;
                }
            }

            if (existeCambio)
            {
                ICPruebaEntities   db  = new ICPruebaEntities();
                LogActualizaciones reg = new LogActualizaciones();
                reg.NombrePantalla    = pantalla;
                reg.ColumnaModificada = camposModificados;
                reg.Valor_Nuevo       = valorModificado.ToString();
                reg.Valor_Anterior    = valorAnterior.ToString();
                reg.Fecha             = DateTime.Now;
                reg.Direccion_IP      = ip;
                reg.Accion            = "Modificacion";
                reg.Activo            = 1;
                reg.Usuario           = usuario;
                db.LogActualizaciones.Add(reg);
                db.SaveChanges();
            }
        }
Пример #19
0
        public JsonResult cargarCSV(HttpPostedFileBase archivoCSV, int lineaNegocio)
        {
            List <string>        listaErrores    = new List <string>();
            var                  hoy             = DateTime.Now;
            IEnumerable <string> lineas          = null;
            object               respuesta       = null;
            int                  totalProcesados = 0;
            int                  lineaActual     = 1;
            int                  contador        = 0;
            bool                 status          = false;
            string               exception       = "Error, se presento un error inesperado.";

            try
            {
                List <string> csvData = new List <string>();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(archivoCSV.InputStream, System.Text.Encoding.GetEncoding("ISO-8859-1")))
                {
                    while (!reader.EndOfStream)
                    {
                        csvData.Add(reader.ReadLine());
                    }
                }
                lineas = csvData.Skip(1);

                var datos = (from periodos in db.cargaDocumentoRoaming
                             where periodos.idDocumento == "TAPIN" & periodos.ordenCarga == "A" & periodos.estatusCarga == "PC"
                             group periodos by periodos.periodoCarga into g
                             orderby g.Key ascending
                             select new
                             { Id = g.Key, Periodo = g.Key }).FirstOrDefault();

                var _IdOperador = db.Operador
                                  .Select(p => p.Id_Operador)
                                  .ToArray();

                var _Deudor = db.Deudor
                              .Select(p => p.Deudor1)
                              .ToArray();

                string Activo = "";

                using (TransactionScope scope = new TransactionScope())
                {
                    foreach (string ln in lineas)
                    {
                        string linea      = ln.Replace('%', ' ');
                        var    lineaSplit = linea.Split('|');
                        ++lineaActual;
                        if (lineaSplit.Count() == 14)
                        {
                            RoamingCancelacionIngreso entidad = new RoamingCancelacionIngreso();

                            try
                            {
                                contador++;

                                Activo = ((!_IdOperador.Any(o => o == lineaSplit[3].ToUpper())) ? "0" : "1");

                                if (Activo == "1")
                                {
                                    Activo = ((!_Deudor.Any(o => o == lineaSplit[6].ToUpper())) ? "0" : "1");
                                }

                                decimal importeMXNtest = 0;
                                decimal difProvFact    = 0;

                                entidad.BanderaConcepto     = lineaSplit[0];
                                entidad.NumeroProvision     = lineaSplit[1];
                                entidad.FechaContable       = datos.Periodo.ToString();
                                entidad.IdOperador          = lineaSplit[3];
                                entidad.Concepto            = lineaSplit[4];
                                entidad.Grupo               = lineaSplit[5];
                                entidad.Deudor              = lineaSplit[6];
                                entidad.MontoProvision      = lineaSplit[7];
                                entidad.Moneda              = lineaSplit[8];
                                entidad.Periodo             = lineaSplit[9];
                                entidad.Tipo                = lineaSplit[10];
                                entidad.NumeroDocumentoSap  = lineaSplit[11];
                                entidad.FolioDocumento      = lineaSplit[12];
                                entidad.TipoCambioProvision = lineaSplit[13];

                                importeMXNtest     = Convert.ToDecimal(entidad.MontoProvision) * Convert.ToDecimal(entidad.TipoCambioProvision);
                                entidad.ImporteMxn = Convert.ToString(importeMXNtest);

                                var monto = from montodock in db.RoamingDocumentoIngreso
                                            where montodock.IdOperador == entidad.IdOperador & montodock.FolioDocumento == entidad.FolioDocumento
                                            & montodock.FechaConsumo == entidad.Periodo

                                            group montodock by new { montodock.FechaContable }

                                into mygroup
                                select mygroup.FirstOrDefault();

                                foreach (var elemento in monto)
                                {
                                    entidad.ImporteFactura = elemento.Monto;
                                }

                                difProvFact = Convert.ToDecimal(entidad.MontoProvision) + Convert.ToDecimal(entidad.ImporteFactura);
                                entidad.DiferenciaProvisionFactura = Convert.ToString(difProvFact);

                                var tipocambiotest = from tipoCamb in db.RoamingDocumentoCosto
                                                     where tipoCamb.FechaConsumo == entidad.Periodo & tipoCamb.IdOperador == entidad.IdOperador
                                                     & tipoCamb.FolioDocumento == entidad.FolioDocumento

                                                     group tipoCamb by new { tipoCamb.FechaContable }

                                into mygroup
                                select mygroup.FirstOrDefault();

                                foreach (var elemento in tipocambiotest)
                                {
                                    entidad.TipoCambioFactura = elemento.TipoCambio;
                                }

                                if (Convert.ToDecimal(entidad.DiferenciaProvisionFactura) < 0)
                                {
                                    decimal excprov = 0;

                                    excprov = Convert.ToDecimal(entidad.DiferenciaProvisionFactura) * Convert.ToDecimal(entidad.TipoCambioProvision);

                                    entidad.ExcesoProvisionMxn = Convert.ToString(excprov);
                                }
                                else
                                {
                                    entidad.ExcesoProvisionMxn = "0";
                                }


                                if (Convert.ToDecimal(entidad.DiferenciaProvisionFactura) > 0)
                                {
                                    decimal insufiProvi = 0;
                                    insufiProvi = Convert.ToDecimal(entidad.DiferenciaProvisionFactura) * Convert.ToDecimal(entidad.TipoCambioFactura);
                                    entidad.InsuficienciaProvisionMxn = Convert.ToString(insufiProvi);
                                }
                                else
                                {
                                    entidad.InsuficienciaProvisionMxn = "0";
                                }

                                //entidad.InsuficienciaProvisionMxn = lineaSplit[18];

                                entidad.Activo       = Activo;
                                entidad.LineaNegocio = "1";
                                entidad.FechaCarga   = DateTime.Now;


                                var flujo = from consuImpo in db.RoamingDocumentoIngreso
                                            where consuImpo.IdOperador == entidad.IdOperador & consuImpo.FolioDocumento == entidad.FolioDocumento
                                            group consuImpo by new { consuImpo.FechaContable }

                                into mygroup
                                select mygroup.FirstOrDefault();

                                foreach (var elemento in flujo)
                                {
                                    if (entidad.BanderaConcepto == "TARIFA")
                                    {
                                        entidad.FechaConsumoTarifa   = elemento.FechaConsumo;
                                        entidad.ImporteFacturaTarifa = elemento.MontoFacturado;
                                    }
                                    //entidad.FechaConsumoTarifa = elemento.FechaFactura;
                                    //entidad.ImporteFacturaTarifa = elemento.MontoFacturado;
                                }


                                totalProcesados++;

                                db.RoamingCancelacionIngreso.Add(entidad);
                            }
                            catch (FormatException e)
                            {
                                if (e.Message == "String was not recognized as a valid DateTime.")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo de Fecha con formato erróneo.");
                                }
                                else
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo con formato erróneo.");
                                }
                            }
                            catch (Exception)
                            {
                                listaErrores.Add("Línea " + lineaActual + ": Error desconocido. ");
                            }
                        }
                        else
                        {
                            listaErrores.Add("Línea " + lineaActual + ": Número de campos insuficiente.");
                        }
                    }
                    db.SaveChanges();
                    scope.Complete();
                    exception = "Datos cargados con éxito";
                    status    = true;
                }

                // llenar fluctuacion
                if (status)
                {
                    db.Database.CommandTimeout = 3000;
                    db.sp_FluctuacionROM_Insert(DateTime.Parse(datos.Periodo), "INGRESO", "FluctuacionIngresoROM");

                    using (var anteriores = new Negocio.PeriodosAnteriores())
                        anteriores.CrearPeriodosAnteriores(db);
                }
            }
            catch (FileNotFoundException)
            {
                exception = "El archivo Selecionado aún no existe en el Repositorio.";
                status    = false;
            }
            catch (UnauthorizedAccessException)
            {
                exception = "No tiene permiso para acceder al archivo actual.";
                status    = false;
            }
            catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
            {
                exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                status    = false;
            }
            catch (TransactionAbortedException)
            {
                exception = "Transacción abortada. Se presentó un error.";
                status    = false;
            }
            catch (Exception err)
            {
                exception = "Error desconocido. " + err.InnerException.ToString();
                status    = false;
            }
            finally
            {
                respuesta = new
                {
                    success         = true,
                    results         = listaErrores,
                    mensaje         = exception,
                    totalProcesados = totalProcesados,
                    status          = status
                };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #20
0
        public JsonResult CargarCSV(HttpPostedFileBase archivoCSV, int lineaNegocio)
        {
            List <string>        listaErrores = new List <string>();
            IEnumerable <string> lineas       = null;
            object respuesta       = null;
            int    totalProcesados = 0;
            int    lineaActual     = 2;
            bool   status          = false;
            string exception       = "Error, se presento un error inesperado.";

            try {
                DateTime fechaContable;
                if (lineaNegocio == 1)
                {
                    fechaContable = DateTime.Parse(db.cargaDocumentoRoaming.Where(x => x.estatusCarga == "PC" && x.ordenCarga == "A" && x.idDocumento == "TAPOUT").Select(x => x.periodoCarga).SingleOrDefault());
                }
                else
                {
                    fechaContable = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1);
                }
                /// Se salta la primera linea, el encabezado
                List <string> csvData = new List <string>();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(archivoCSV.InputStream, Encoding.Default)) {
                    while (!reader.EndOfStream)
                    {
                        csvData.Add(reader.ReadLine());
                    }
                }
                lineas = csvData.Skip(1);

                using (TransactionScope scope = new TransactionScope())
                {
                    foreach (string linea in lineas)
                    {
                        var lineaSplit = linea.Split(';');
                        if (lineaSplit.Count() == 11)

                        {
                            try
                            {
                                AjustesObjecion aObj = new AjustesObjecion();

                                aObj.sentido        = lineaSplit[0];
                                aObj.sociedad       = lineaSplit[1];
                                aObj.trafico        = lineaSplit[2];
                                aObj.servicio       = lineaSplit[3];
                                aObj.deudorAcreedor = lineaSplit[4];
                                aObj.operador       = lineaSplit[5];
                                aObj.grupo          = lineaSplit[6];

                                aObj.periodo       = DateTime.ParseExact(lineaSplit[7], "dd/MM/yyyy", new CultureInfo("es-ES"));
                                aObj.importe       = decimal.Parse(lineaSplit[8]);
                                aObj.moneda        = lineaSplit[9];
                                aObj.lineaNegocio  = lineaNegocio;
                                aObj.periodo_carga = fechaContable;
                                aObj.origen        = "CARGA";
                                aObj.minutos       = decimal.Parse(lineaSplit[10]);

                                var result = db.spValidaAjustesObj(aObj.sentido, aObj.sociedad, aObj.trafico,
                                                                   aObj.servicio, aObj.deudorAcreedor, aObj.operador, aObj.grupo, lineaNegocio).ToList();

                                aObj.idSociedad       = result[0].idSociedad;
                                aObj.idTrafico        = result[0].idTrafico;
                                aObj.idServicio       = result[0].idServicio;
                                aObj.idDeudorAcreedor = result[0].idDeudorAcreedor;
                                aObj.idOperador       = result[0].idOperador;
                                aObj.idGrupo          = result[0].idGrupo;

                                if (result[0].idStatus == 1)
                                {
                                    aObj.activo = 1;
                                    totalProcesados++;
                                }
                                else
                                {
                                    aObj.activo = 0;
                                    listaErrores.Add("Línea " + lineaActual + ": Error en la carga, no se encontraron coincidencias en los catálogo(s).");
                                }

                                db.AjustesObjecion.Add(aObj);
                                Log log = new Log();
                                log.insertaNuevoOEliminado(aObj, "Nuevo", "ajustesObjecion.html", Request.UserHostAddress);
                            } catch (FormatException) {
                                listaErrores.Add("Línea " + lineaActual + ": Campo con formato erróneo.");
                            }
                        }
                        else
                        {
                            listaErrores.Add("Línea " + lineaActual + ": Número de campos insuficiente.");
                        }
                        ++lineaActual;
                    }
                    // Termina exitosamente la transaccion
                    db.SaveChanges();
                    scope.Complete();
                    exception = "Datos cargados con éxito";
                    status    = true;
                }
            }
            catch (FileNotFoundException)
            {
                exception = "El archivo Selecionado aún no existe en el Repositorio.";
                status    = false;
            }
            catch (UnauthorizedAccessException)
            {
                exception = "No tiene permiso para acceder al archivo actual.";
                status    = false;
            }
            catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
            {
                exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                status    = false;
            }
            catch (TransactionAbortedException)
            {
                exception = "Transacción abortada. Se presentó un error.";
                status    = false;
            }
            finally
            {
                respuesta = new
                {
                    success = true,
                    results = listaErrores,
                    mensaje = exception,
                    totalProcesados,
                    status
                };
            }

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #21
0
        public object CargaTAPINA(string periodo, string ruta, string nombre, int Id, char separador)
        {
            object        respuesta = null;
            string        res = "";
            int           i = 0, defectuosos = 0;
            string        exception = "";
            List <string> resultado = new List <string>();

            string[]    lineas      = null;
            bool        exitoso     = false;
            CultureInfo cultureInfo = new CultureInfo("es-ES", false);
            DateTime    dateRom     = new DateTime();
            DateTime    dateTime    = new DateTime();
            DateTime    fecha_carga = new DateTime(DateTime.Today.Year, DateTime.Today.Month, 1);

            try {
                lineas = System.IO.File.ReadAllLines(ruta + "/" + nombre, Encoding.Default).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();
            } catch (FileNotFoundException) {
                exception = "El archivo Selecionado aún no existe en el Repositorio.";
            } catch (UnauthorizedAccessException) {
                exception = "No tiene permiso para acceder al archivo actual.";
            } catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
            {
                exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
            }
            if (lineas != null)
            {
                try {
                    var list = new List <datosTraficoTAPINA>();
                    using (TransactionScope scope = new TransactionScope()) {
                        for (i = 1; i < lineas.Count(); i++)
                        {
                            var linea    = SepararLineas(lineas[i], separador);
                            var datosROM = new datosTraficoTAPINA();
                            if (linea.Count() != 27)
                            {
                                resultado.Add("Línea " + i + ": Numero de campos insuficiente.");
                                ++defectuosos;
                                continue;
                            }

                            if (ValidaCampo(linea[0], "") != null)
                            {
                                //DateTime dateRom = new DateTime();
                                dateRom = DateTime.Parse(linea[0], cultureInfo);
                                datosROM.settlementDate = dateRom;//DateTime.ParseExact(linea[0], "dd/MM/yyyy", new CultureInfo("es-ES"));
                            }
                            else
                            {
                                datosROM.settlementDate = null;
                            }


                            datosROM.myPMN          = ValidaCampo(linea[1], "");
                            datosROM.VRSFCMTSRH     = ValidaCampo(linea[2], "");
                            datosROM.codigoAcreedor = ValidaCampo(linea[3], "");
                            datosROM.theirPMN       = ValidaCampo(linea[4], "");
                            datosROM.operatorName   = ValidaCampo(linea[5], "");
                            datosROM.rapFileName    = ValidaCampo(linea[6], "");
                            if (ValidaCampo(linea[7], "") != null)
                            {
                                dateRom = DateTime.Parse(linea[7], cultureInfo);
                                datosROM.rapFileAvailableTimeStamp = dateRom;//DateTime.ParseExact(linea[7], "dd/MM/yyyy", new CultureInfo("es-ES"));
                            }
                            else
                            {
                                datosROM.rapFileAvailableTimeStamp = null;
                            }
                            datosROM.rapStatus              = ValidaCampo(linea[8], "");
                            datosROM.rapFileType            = ValidaCampo(linea[9], "");
                            datosROM.rapAdjustmentIndicator = ValidaCampo(linea[10], "");
                            datosROM.tapFileType            = ValidaCampo(linea[11], "");
                            datosROM.tapFileName            = ValidaCampo(linea[12], "");
                            datosROM.callType           = ValidaCampo(linea[13], "");
                            datosROM.numberCalls        = Int32.Parse(linea[14]);
                            datosROM.totalRealVolume    = Math.Round(decimal.Parse(ValidaCampo(linea[15], ""), NumberStyles.Any), 15);
                            datosROM.totalChargedVolume = Math.Round(decimal.Parse(ValidaCampo(linea[16], ""), NumberStyles.Any), 15);
                            datosROM.realDuration       = Math.Round(decimal.Parse(ValidaCampo(linea[17], ""), NumberStyles.Any), 15);
                            datosROM.chargedDuration    = Math.Round(decimal.Parse(ValidaCampo(linea[18], ""), NumberStyles.Any), 15);
                            datosROM.chargesTaxesSDR    = Math.Round(decimal.Parse(ValidaCampo(linea[19], ""), NumberStyles.Any), 15);
                            datosROM.taxes               = Math.Round(decimal.Parse(ValidaCampo(linea[20], ""), NumberStyles.Any), 15);
                            datosROM.totalCharges        = Math.Round(decimal.Parse(ValidaCampo(linea[21], ""), NumberStyles.Any), 15);
                            datosROM.chargesTaxesLC      = Math.Round(decimal.Parse(ValidaCampo(linea[22], ""), NumberStyles.Any), 15);
                            datosROM.taxesLocalCurrency1 = Math.Round(decimal.Parse(ValidaCampo(linea[23], ""), NumberStyles.Any), 15);
                            datosROM.taxesLocalCurrency2 = Math.Round(decimal.Parse(ValidaCampo(linea[24], ""), NumberStyles.Any), 15);
                            datosROM.totalChargesLC      = Math.Round(decimal.Parse(ValidaCampo(linea[25], ""), NumberStyles.Any), 15);

                            if (ValidaCampo(linea[26], "") != null)
                            {
                                //DateTime dateRom = new DateTime();
                                dateRom           = DateTime.Parse(linea[26], cultureInfo);
                                datosROM.callDate = dateRom;//DateTime.ParseExact(linea[26], "dd/MM/yyyy", new CultureInfo("es-ES"));
                            }
                            else
                            {
                                datosROM.callDate = null;
                            }

                            datosROM.idCarga     = Id;
                            datosROM.fecha_carga = fecha_carga;
                            list.Add(datosROM);

                            dateRom = DateTime.Parse(linea[0], cultureInfo);
                        }
                        db.BulkInsert(list, true, "datosTraficoTAPINA");
                        //Log log2 = new Log();
                        //log2.registraCarga("datosTraficoTAPINA.html", Request.UserHostAddress,nombre);

                        cargaDocumentoRoaming cargaDocumento = db.cargaDocumentoRoaming.Where(x => x.Id == Id).SingleOrDefault();
                        cargaDocumento.estatusCarga = "CC";

                        //Log log = new Log();
                        //log.insertaBitacoraModificacion(cargaDocumento, "Id", cargaDocumento.Id, "cargaDocumentoRoaming.html", Request.UserHostAddress);

                        var fecha = db.cargaDocumentoRoaming.Where(x => x.Id == Id).Select(c => c.periodoCarga).SingleOrDefault();

                        dateTime = DateTime.Parse(fecha, cultureInfo);

                        dateTime = dateTime.AddMonths(1);

                        res = dateTime.Year + "/" + dateTime.Month.ToString("00") + "/" + dateTime.Day.ToString("00");

                        cargaDocumentoRoaming nuevo = new cargaDocumentoRoaming
                        {
                            idDocumento  = "TAPIN",
                            periodoCarga = res,
                            fechaCarga   = null,
                            tipoCarga    = "TAPIN",
                            ordenCarga   = "A",
                            estatusCarga = "PC"
                        };

                        db.cargaDocumentoRoaming.Add(nuevo);
                        //Log log3 = new Log();
                        //log3.insertaNuevoOEliminado(nuevo, "Nuevo", "cargaDocumentoRoaming.html", Request.UserHostAddress);

                        respuesta = new { success = true, results = "ok", exitos = i - defectuosos - 1, total = lineas.Count() - 1, procesados = resultado };
                        db.SaveChanges();

                        // Se hace la transaccion
                        scope.Complete();
                        exitoso = true;
                    }
                }
                catch (FormatException ex) {
                    string error = ex.Message;
                    respuesta = new { success = false, results = "Error en la conversión de datos." + "Linea: " + i, exitos = -1, total = -1 };
                }
                catch (TransactionAbortedException) {
                    respuesta = new { success = false, results = "Transacción abortada. Se presentó un error.", exitos = -1, total = -1 };
                }
                catch (Exception ex)
                {
                    string error = ex.Message;
                    respuesta = new { success = false, results = "Error en la conversión de datos.", exitos = -1, total = -1 };
                }
            }
            else
            {
                respuesta = new { success = false, results = exception, exitos = -1, total = -1 };
            }

            if (exitoso)
            {
                db.Database.CommandTimeout = 3000;
                db.sp_InsertarPXQCostosROM(dateRom);
                MoverArchivo(ruta, nombre);
            }
            return(respuesta);
        }
        public JsonResult cargarCSV(HttpPostedFileBase archivoCSV, int lineaNegocio)
        {
            List <string>        listaErrores = new List <string>();
            var                  hoy = DateTime.Now;
            IEnumerable <string> lineas = null;
            object               respuesta = null;
            int                  totalProcesados = 0;
            int                  lineaActual = 1;
            int                  contador = 0;
            bool                 status = false;
            string               ope, fact;
            string               exception = "Error, se presento un error inesperado.";

            try
            {
                List <string> csvData = new List <string>();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(archivoCSV.InputStream, System.Text.Encoding.UTF8))
                {
                    while (!reader.EndOfStream)
                    {
                        csvData.Add(reader.ReadLine());
                    }
                }
                lineas = csvData.Skip(1);

                using (TransactionScope scope = new TransactionScope())
                {
                    foreach (string ln in lineas)
                    {
                        string linea      = ln.Replace('%', ' ');
                        var    lineaSplit = linea.Split('|');
                        ++lineaActual;
                        if (lineaSplit.Count() == 20)
                        {
                            RoamingCancelacionCosto entidad = new RoamingCancelacionCosto();

                            try
                            {
                                contador++;
                                ope  = lineaSplit[2];
                                fact = lineaSplit[11];

                                entidad.BanderaConcepto            = lineaSplit[0];
                                entidad.NumeroProvision            = lineaSplit[1];
                                entidad.CuentaContable             = lineaSplit[2];
                                entidad.Indat                      = lineaSplit[3];
                                entidad.Concepto                   = lineaSplit[4];
                                entidad.Grupo                      = lineaSplit[5];
                                entidad.Acreedor                   = lineaSplit[6];
                                entidad.MontoProvision             = lineaSplit[7];
                                entidad.Moneda                     = lineaSplit[8];
                                entidad.Periodo                    = lineaSplit[9];
                                entidad.Tipo                       = lineaSplit[10];
                                entidad.NumeroDocumentoSap         = lineaSplit[11];
                                entidad.FolioDocumento             = lineaSplit[12];
                                entidad.TipoCambioProvision        = lineaSplit[13];
                                entidad.ImporteMxn                 = lineaSplit[14];
                                entidad.ImporteFactura             = lineaSplit[15];
                                entidad.DiferenciaProvisionFactura = lineaSplit[16];
                                entidad.TipoCambioFactura          = lineaSplit[17];
                                entidad.ExcesoProvisionMxn         = lineaSplit[18];
                                entidad.InsuficienciaProvisionMxn  = lineaSplit[19];
                                entidad.Activo                     = "1";
                                entidad.LineaNegocio               = "1";
                                entidad.FechaCarga                 = DateTime.Now;

                                totalProcesados++;

                                db.RoamingCancelacionCosto.Add(entidad);
                            }
                            catch (FormatException e)
                            {
                                if (e.Message == "String was not recognized as a valid DateTime.")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo de Fecha con formato erróneo.");
                                }
                                else
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo con formato erróneo.");
                                }
                            }
                            catch (Exception)
                            {
                                listaErrores.Add("Línea " + lineaActual + ": Error desconocido. ");
                            }
                        }
                        else
                        {
                            listaErrores.Add("Línea " + lineaActual + ": Número de campos insuficiente.");
                        }
                    }
                    db.SaveChanges();
                    scope.Complete();
                    exception = "Datos cargados con éxito";
                    status    = true;
                }
            }
            catch (FileNotFoundException)
            {
                exception = "El archivo Selecionado aún no existe en el Repositorio.";
                status    = false;
            }
            catch (UnauthorizedAccessException)
            {
                exception = "No tiene permiso para acceder al archivo actual.";
                status    = false;
            }
            catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
            {
                exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                status    = false;
            }
            catch (TransactionAbortedException)
            {
                exception = "Transacción abortada. Se presentó un error.";
                status    = false;
            }
            catch (Exception err)
            {
                exception = "Error desconocido. " + err.InnerException.ToString();
                status    = false;
            }
            finally
            {
                respuesta = new
                {
                    success         = true,
                    results         = listaErrores,
                    mensaje         = exception,
                    totalProcesados = totalProcesados,
                    status          = status
                };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
        public JsonResult CargarCSV(HttpPostedFileBase archivoCSV, int lineaNegocio)
        {
            List <string>        listaErrores = new List <string>();
            var                  hoy = DateTime.Now;
            IEnumerable <string> lineas = null;
            object               respuesta = null;
            int                  totalProcesados = 0;
            int                  lineaActual = 1;
            bool                 status = false;
            string               ope, fact;
            string               exception = "Error, se presento un error inesperado.";

            try
            {
                List <string> csvData = new List <string>();
                using (System.IO.StreamReader reader = new System.IO.StreamReader(archivoCSV.InputStream))
                {
                    while (!reader.EndOfStream)
                    {
                        csvData.Add(reader.ReadLine());
                    }
                }
                lineas = csvData.Skip(1);

                var datos = (from periodos in db.cargaDocumentoRoaming
                             where periodos.idDocumento == "TAPIN" & periodos.ordenCarga == "A" & periodos.estatusCarga == "PC"
                             group periodos by periodos.periodoCarga into g
                             orderby g.Key ascending
                             select new
                             { Id = g.Key, Periodo = g.Key }).FirstOrDefault();

                using (TransactionScope scope = new TransactionScope())
                {
                    foreach (string ln in lineas)
                    {
                        string linea      = ln.Replace('%', ' ');
                        var    lineaSplit = linea.Split('|');
                        ++lineaActual;
                        if (lineaSplit.Count() == 26)
                        {
                            RoamingDocumentoIngreso entidad = new RoamingDocumentoIngreso();

                            try
                            {
                                ope  = lineaSplit[6];
                                fact = lineaSplit[19];

                                entidad.Anio               = lineaSplit[0];
                                entidad.FechaContable      = datos.Periodo.ToString(); //lineaSplit[1];
                                entidad.FechaConsumo       = lineaSplit[2];
                                entidad.Compania           = lineaSplit[3];
                                entidad.Servicio           = lineaSplit[4];
                                entidad.Grupo              = lineaSplit[5];
                                entidad.IdOperador         = lineaSplit[6];
                                entidad.NombreOperador     = lineaSplit[7];
                                entidad.Deudor             = lineaSplit[8];
                                entidad.Material           = lineaSplit[9];
                                entidad.Trafico            = lineaSplit[10];
                                entidad.Iva                = lineaSplit[11];
                                entidad.PorcentajeIva      = lineaSplit[12];
                                entidad.Moneda             = lineaSplit[13];
                                entidad.Minutos            = lineaSplit[14];
                                entidad.Tarifa             = lineaSplit[15];
                                entidad.Monto              = lineaSplit[16];
                                entidad.MontoFacturado     = lineaSplit[17];
                                entidad.FechaFactura       = lineaSplit[18];
                                entidad.FolioDocumento     = lineaSplit[19];
                                entidad.TipoCambio         = lineaSplit[20];
                                entidad.MontoMxn           = lineaSplit[21];
                                entidad.CuentaContable     = lineaSplit[22];
                                entidad.ClaseDocumento     = lineaSplit[23];
                                entidad.ClaseDocumentoSap  = lineaSplit[24];
                                entidad.NumeroDocumentoSap = lineaSplit[25];
                                entidad.Activo             = "1";
                                entidad.LineaNegocio       = "1";
                                entidad.FechaCarga         = DateTime.Now;

                                totalProcesados++;

                                db.RoamingDocumentoIngreso.Add(entidad);
                            }
                            catch (FormatException e)
                            {
                                if (e.Message == "String was not recognized as a valid DateTime.")
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo de Fecha con formato erróneo.");
                                }
                                else
                                {
                                    listaErrores.Add("Línea " + lineaActual + ": Campo con formato erróneo.");
                                }
                            }
                            catch (Exception)
                            {
                                listaErrores.Add("Línea " + lineaActual + ": Error desconocido. ");
                            }
                        }
                        else
                        {
                            listaErrores.Add("Línea " + lineaActual + ": Número de campos insuficiente.");
                        }
                    }
                    db.SaveChanges();
                    scope.Complete();
                    exception = "Datos cargados con éxito";
                    status    = true;
                }
            }
            catch (FileNotFoundException)
            {
                exception = "El archivo Selecionado aún no existe en el Repositorio.";
                status    = false;
            }
            catch (UnauthorizedAccessException)
            {
                exception = "No tiene permiso para acceder al archivo actual.";
                status    = false;
            }
            catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
            {
                exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                status    = false;
            }
            catch (TransactionAbortedException)
            {
                exception = "Transacción abortada. Se presentó un error.";
                status    = false;
            }
            catch (Exception err)
            {
                exception = "Error desconocido. " + err.InnerException.ToString();
                status    = false;
            }
            finally
            {
                respuesta = new
                {
                    success         = true,
                    results         = listaErrores,
                    mensaje         = exception,
                    totalProcesados = totalProcesados,
                    status          = status
                };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #24
0
        public object CargaDatosMVNO(string Periodo)
        {
            string ruta = "", nombreArchivo = "", exception = "Error al cargar el archivo.";
            char   separador;
            bool   exitoso     = false;
            int    Id          = 0;
            int    i           = 0;
            int?   numeroCarga = db.DatosTraficoMVNO.Max(x => x.NumeroCarga);

            if (numeroCarga == null)
            {
                numeroCarga = 1;
            }
            string   periodo = DateTime.ParseExact(Periodo.ToUpper(), "yyyy MMMM", new CultureInfo("es-ES")).ToString("yyyy/MM");
            string   f       = DateTime.ParseExact(periodo, "yyyy/MM", new CultureInfo("es-ES")).ToString("dd/MM/yyyy");
            DateTime fecha   = Convert.ToDateTime(periodo);

            object respuesta = null;

            using (TransactionScope transaction = new TransactionScope()) {
                try {
                    var traficoMVNO = from archivo in db.CargaDocumento
                                      join parametro in db.parametrosCargaDocumento
                                      on archivo.Id_Documento equals parametro.idDocumento
                                      where archivo.Periodo == periodo &&
                                      archivo.EstatusCarga == "PC" &&
                                      archivo.Id_LineaNegocio == 3
                                      select new
                    {
                        parametro.pathURL,
                        parametro.nombreArchivo,
                        archivo.Periodo,
                        archivo.Id,
                        archivo.EstatusCarga,
                        parametro.caracterSeparador
                    };
                    nombreArchivo = traficoMVNO.SingleOrDefault().nombreArchivo.Replace("YYYYMM", traficoMVNO.SingleOrDefault().Periodo.Replace("/", ""));
                    ruta          = traficoMVNO.SingleOrDefault().pathURL + nombreArchivo;
                    Id            = traficoMVNO.SingleOrDefault().Id;
                    separador     = Convert.ToChar(traficoMVNO.SingleOrDefault().caracterSeparador);
                    string[] lineas = System.IO.File.ReadAllLines(ruta);
                    if (lineas.Count() > 0)
                    {
                        for (i = 0; i < lineas.Count(); i++)
                        {
                            if (lineas[i].Contains("Collection") || lineas[i] == "")
                            {
                                continue;
                            }

                            var linea      = lineas[i].Split(separador);
                            var datosMVNOS = new DatosTraficoMVNO
                            {
                                //ID carga
                                Id_Carga = Id,
                                //Collection
                                Collection = ValidaCampo(linea[0], "Collection"),
                                //HOperator
                                HOperator = ValidaCampo(linea[1], "HOperator"),
                                //Operator
                                Operator = ValidaCampo(linea[2], "Operator"),
                                //ReferenceCode
                                ReferenceCode = ValidaCampo(linea[3], "ReferenceCode"),
                                //TransDate
                                TransDate = Convert.ToDateTime(ValidaCampo(linea[4], "TransDate")),
                                //Eventos
                                Eventos = decimal.Parse(ValidaCampo(linea[5], "Eventos")),
                                //IdCollectionServicioRegion
                                IdColleccionServicioRegion = ValidaCampo(linea[6], "IdCollectionServicioRegion"),
                                //Service
                                Service = ValidaCampo(linea[7], "Service"),
                                //Real
                                Real = decimal.Parse(ValidaCampo(linea[8], "Real")),
                                //Duration
                                Duration = decimal.Parse(ValidaCampo(linea[9], "Duration")),
                                //Monto
                                Monto = decimal.Parse(linea[10]),
                                //PrecioUnitario
                                PrecioUnitario = decimal.Parse(linea[11]),
                                //Moneda
                                Moneda = ValidaCampo(linea[12], "Moneda"),
                                //Module
                                Module = ValidaCampo(linea[13], "Module"),
                                //Numero carga
                                NumeroCarga = numeroCarga
                            };
                            db.DatosTraficoMVNO.Add(datosMVNOS);
                            Log log2 = new Log();
                            log2.insertaNuevoOEliminado(datosMVNOS, "Nuevo", "DatosTraficoMVNO.html", Request.UserHostAddress);
                            db.SaveChanges();
                        }
                        CargaDocumento cargaDocumento = db.CargaDocumento.Where(x => x.Id == Id).SingleOrDefault();
                        cargaDocumento.EstatusCarga = "CC";
                        cargaDocumento.FechaCarga   = DateTime.Now;

                        InsertCargaDocumento(cargaDocumento, fecha);

                        //Log log3 = new Log();
                        //log3.insertaBitacoraModificacion(cargaDocumento, "Id", cargaDocumento.Id, "CargaDocumento.html", Request.UserHostAddress);

                        db.SaveChanges();
                    }
                    transaction.Complete();
                    exitoso = true;
                } catch (FileNotFoundException) {
                    exception = "El archivo no se encuentra en el directorio especificado.";
                } catch (UnauthorizedAccessException) {
                    exception = "No tiene permiso para acceder al archivo actual.";
                } catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
                {
                    exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                } catch (TransactionAbortedException) {
                    exception = "Transacción abortada. Se presentó un error." + " Línea: " + i;
                } catch (FormatException) {
                    exception = "Error en la conversión de datos." + " Línea: " + i;
                } finally {
                    if (exitoso)
                    {
                        db.SaveChanges();
                        respuesta = new { success = true, results = "ok" };
                    }
                    else
                    {
                        respuesta = new { success = false, results = exception };
                    }
                }
            }
            db.Dispose();

            return(respuesta);
        }
Пример #25
0
        public object CargaDatosLDI(string Periodo)
        {
            string ruta = "", nombreArchivo = "", exception = "Error al cargar el archivo";
            object respuesta = null;
            char   separador;
            bool   exitoso = false;
            int    Id = 0, numeroDeLinea = 0, contador = 0;

            string[] lineas = null;
            string   operadores = "", monedas = "", trafico = "";

            string[] arreglo      = null;
            string   periodo      = DateTime.ParseExact(Periodo.ToUpper(), "yyyy MMMM", new CultureInfo("es-ES")).ToString("yyyy/MM");
            DateTime fechaPeriodo = Convert.ToDateTime(periodo);
            int      lineaLDI     = 2;

            List <Claves>          listaIDS             = new List <Claves>();
            List <Errores>         listaErrores         = new List <Errores>();
            List <DatosTraficoLDI> listaTrafico         = new List <DatosTraficoLDI>();
            List <DatosTraficoLDI> listaTraficoCompleta = new List <DatosTraficoLDI>();

            int?numeroCarga = db.DatosTraficoLDI.Max(x => x.NumeroCarga);

            if (numeroCarga == null)
            {
                numeroCarga = 1;
            }
            else
            {
                numeroCarga = numeroCarga + 1;
            }
            List <object> lista = new List <object>();

            using (TransactionScope transaction = new TransactionScope()) {
                try {
                    var traficoLDI = from archivo in db.CargaDocumento
                                     join parametro in db.parametrosCargaDocumento
                                     on archivo.Id_Documento equals parametro.idDocumento
                                     where archivo.Periodo == periodo &&
                                     archivo.EstatusCarga == "PC" &&
                                     archivo.Id_LineaNegocio == lineaLDI
                                     select new
                    {
                        parametro.pathURL,
                        parametro.nombreArchivo,
                        archivo.Periodo,
                        archivo.Id,
                        archivo.EstatusCarga,
                        parametro.caracterSeparador
                    };

                    nombreArchivo = traficoLDI.SingleOrDefault().nombreArchivo.Replace("YYYYMM", traficoLDI.SingleOrDefault().Periodo.Replace("/", ""));
                    ruta          = traficoLDI.SingleOrDefault().pathURL + nombreArchivo;
                    Id            = traficoLDI.SingleOrDefault().Id;
                    separador     = Convert.ToChar(traficoLDI.SingleOrDefault().caracterSeparador);

                    lineas = System.IO.File.ReadAllLines(ruta, Encoding.Default).Where(x => !string.IsNullOrWhiteSpace(x)).ToArray();

                    string[] arrOperador = new string[lineas.Count()];
                    string[] arrMoneda   = new string[lineas.Count()];
                    string[] arrTrafico  = new string[lineas.Count()];

                    foreach (string linea in lineas)
                    {
                        if (numeroDeLinea > 0)
                        {
                            arreglo = linea.Split(',');
                            if (ValidaLinea(arreglo))
                            {
                                operadores = operadores + arreglo[4] + ",";
                                monedas    = monedas + arreglo[10] + ",";
                                trafico    = trafico + arreglo[13] + ",";

                                arrOperador[contador] = arreglo[4];
                                arrMoneda[contador]   = arreglo[10];
                                arrTrafico[contador]  = arreglo[13];


                                listaTrafico.Add(new DatosTraficoLDI
                                {
                                    Id_Carga         = Id,
                                    Franchise        = arreglo[0],
                                    Direccion        = arreglo[1],
                                    Billed_Product   = arreglo[2],
                                    Rating_Component = arreglo[3],
                                    Unit_Cost_User   = decimal.Parse(arreglo[5]),
                                    Month            = DateTime.ParseExact(arreglo[6], "dd/MM/yyyy", new CultureInfo("es-ES")),
                                    Calls            = decimal.Parse(arreglo[7]),
                                    Actual_Usage     = decimal.Parse(arreglo[8]),
                                    Charge_Usage     = decimal.Parse(arreglo[9]),
                                    Amount           = decimal.Parse(arreglo[11]),
                                    Iva            = decimal.Parse(arreglo[12]),
                                    Sobrecargo     = decimal.Parse(arreglo[14]),
                                    NumeroCarga    = numeroCarga,
                                    fecha_contable = fechaPeriodo.Date
                                });
                                //Código temporal
                                contador++;
                            }
                            else
                            {
                                listaErrores.Add(new Errores
                                {
                                    numeroLinea = numeroDeLinea,
                                    motivo      = "Número de campos insuficiente."
                                });
                            }
                        }
                        numeroDeLinea++;
                    }
                    //Obtener ID's correspondientes
                    listaIDS = BuscaId(listaTrafico, trafico, operadores, monedas, lineaLDI);
                    //Asigna los Id a los elementos de la lista
                    listaTrafico         = ValidaAsignaDatos(listaTrafico, listaIDS, arrOperador, arrMoneda, arrTrafico, listaErrores);
                    listaTraficoCompleta = listaTrafico;
                    if (listaTraficoCompleta.Count() > 0)
                    {
                        DbContext context = db;
                        IC2.DbContextSqlServerExtensions.BulkInsert(context, listaTraficoCompleta, true, "DatosTraficoLDI");
                        //Log log3 = new Log();
                        //log3.registraCarga("DatosTraficoLDI.html", Request.UserHostAddress, nombreArchivo);
                    }
                    //Conceptos
                    db.sp_traficoConceptos_Update(fechaPeriodo);
                    //Data Trafico
                    InsertDataTrafico(fechaPeriodo);
                    //Actualiza Carga Documentos
                    CargaDocumento cargaDocumento = db.CargaDocumento.Where(x => x.Id == Id).SingleOrDefault();
                    cargaDocumento.EstatusCarga = "CC";
                    cargaDocumento.FechaCarga   = DateTime.Now;
                    InsertCargaDocumento(cargaDocumento, fechaPeriodo);
                    //Log log4 = new Log();
                    //log4.insertaBitacoraModificacion(cargaDocumento, "Id", cargaDocumento.Id, "CargaDocumento.html", Request.UserHostAddress);
                    transaction.Complete();
                    exitoso = true;
                } catch (FileNotFoundException) {
                    exception = "El archivo no se encuentra en el directorio especificado.";
                } catch (UnauthorizedAccessException) {
                    exception = "No tiene permiso para acceder al archivo actual.";
                } catch (IOException e) when((e.HResult & 0x0000FFFF) == 32)
                {
                    exception = "Falta el nombre del archivo, o el archivo o directorio está en uso.";
                } catch (TransactionAbortedException) {
                    exception = "Transacción abortada. Se presentó un error." + " Línea: " + contador;
                } catch (FormatException) {
                    exception = "Error en la conversión de datos." + " Línea: " + contador;
                } finally {
                    if (exitoso)
                    {
                        respuesta = new { success = true, results = "ok" };
                    }
                    else
                    {
                        respuesta = new { success = false, results = exception };
                    }
                }
            }
            db.SaveChanges();
            db.Dispose();
            return(respuesta);
        }