Пример #1
0
        public JsonResult BorrarDocumentosCosto(string strID)
        {
            object respuesta = null;
            int    Id        = 0;

            strID = strID.TrimEnd(',');
            try {
                string[] Ids = strID.Split(',');
                for (int i = 0; i < Ids.Length; i++)
                {
                    if (Ids[i].Length != 0)
                    {
                        Id = int.Parse(Ids[i]);
                        documentosCosto documento = db.documentosCosto.Where(x => x.Id == Id && x.activo == 1).SingleOrDefault();
                        documento.activo = 0;
                        Log log = new Log();
                        log.insertaNuevoOEliminado(documento, "Eliminado", "documentosCosto.html", Request.UserHostAddress);

                        db.SaveChanges();
                    }
                }
                respuesta = new { success = true, result = "ok" };
            } catch (Exception ex) {
                respuesta = new { success = false, result = ex.Message };
            }
            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #2
0
        public JsonResult ModificarDocumentosCosto(int lineaNegocio, int id, int ano, DateTime fechaContable, DateTime fechaConsumo,
                                                   int idSociedad, string compania, int?idServicio, string servicio, int idGrupo, string grupo, int idAcreedor, string acreedor,
                                                   int idOperador, string operador, string nombreOperador, string codigoMaterial, int?idTrafico, string trafico,
                                                   decimal montoIva, decimal iva, int idMoneda, string moneda, decimal?minutos, decimal?tarifa, decimal monto,
                                                   decimal montoFacturado, DateTime fechaFactura, string factura, decimal tipoCambio, decimal montoMXP,
                                                   int?idCuentaResultado, string cuentaContable, string claseDocumento, string claseDocumentoSAP, string numDocumentoPF)
        {
            object respuesta = null;

            documentosCosto VerificaDoc = db.documentosCosto.Where(x => x.operador == operador && x.factura == factura && x.activo == 1 && x.lineaNegocio == lineaNegocio).SingleOrDefault();

            if (VerificaDoc == null || VerificaDoc.Id == id)
            {
                try {
                    documentosCosto documento = db.documentosCosto.Where(x => x.Id == id).SingleOrDefault();

                    if (documento.lineaNegocio != 1)
                    {
                        documento.idMoneda = idMoneda;
                        documento.moneda   = moneda;
                    }

                    documento.ano               = new DateTime(ano, 01, 01);
                    documento.fechaContable     = fechaContable;
                    documento.fechaConsumo      = fechaConsumo;
                    documento.idSociedad        = idSociedad;
                    documento.compania          = compania;
                    documento.idServicio        = idServicio;
                    documento.servicio          = servicio;
                    documento.idGrupo           = idGrupo;
                    documento.grupo             = grupo;
                    documento.idAcreedor        = idAcreedor;
                    documento.acreedor          = acreedor;
                    documento.idOperador        = idOperador;
                    documento.operador          = operador;
                    documento.nombreOperador    = nombreOperador;
                    documento.codigoMaterial    = codigoMaterial;
                    documento.idTrafico         = idTrafico;
                    documento.trafico           = trafico;
                    documento.montoIva          = montoIva;
                    documento.iva               = iva;
                    documento.idMoneda          = idMoneda;
                    documento.moneda            = moneda;
                    documento.minutos           = minutos;
                    documento.tarifa            = tarifa;
                    documento.monto             = monto;
                    documento.montoFacturado    = montoFacturado;
                    documento.fechaFactura      = fechaFactura;
                    documento.factura           = factura;
                    documento.tipoCambio        = tipoCambio;
                    documento.montoMXP          = montoMXP;
                    documento.idCuentaResultado = idCuentaResultado;
                    documento.cuentaContable    = cuentaContable;
                    documento.claseDocumento    = claseDocumento;
                    documento.claseDocumentoSAP = claseDocumentoSAP;
                    documento.numDocumentoPF    = numDocumentoPF;
                    Log log = new Log();
                    log.insertaBitacoraModificacion(documento, "Id", documento.Id, "documentosCosto.html", Request.UserHostAddress);

                    db.SaveChanges();
                    respuesta = new { success = true, results = "ok" };
                } catch (Exception) {
                    respuesta = new { success = false, results = "Hubo un error mientras se procesaba la petición." };
                }
            }
            else
            {
                respuesta = new { success = false, results = "El Operador y Factura actual ya estan dados de alta." };
            }

            return(Json(respuesta, JsonRequestBehavior.AllowGet));
        }
Пример #3
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));
        }