Ejemplo n.º 1
0
        //------------------Methods
        public List <ItemComparacion> ComparaContraBD()
        {
            int numeroFilas = MyDataTableExcel.Rows.Count; //son en numero de filas que en realidad tiene el archivo de excel

            List <FilaExcel> listaFilasExcel = new List <FilaExcel>();

            foreach (DataRow fila in myDataTableExcel.Rows)
            {
                //columna 13 tiene uuid
                //columna 62 tiene total neto
                //columna 5 tiene el rfc receptor
                //columna 1 tiene la fecha
                //columna 18 tiene version de CFDI
                string  uuid        = (string)fila[12];
                decimal totalNeto   = Decimal.Parse(fila[61].ToString());
                string  rfcReceptor = (string)fila[4];
                string  fecha       = (string)fila[0];
                string  versionCFDI = (string)fila[17];


                FilaExcel filaExcel = new FilaExcel(uuid, totalNeto, rfcReceptor, fecha, versionCFDI);
                listaFilasExcel.Add(filaExcel);
            }



            // hacer un array de UID que necesitamos buscar,
            var arrarUids = listaFilasExcel.Select(x => x.Uuid).ToArray();

            // hacer la consulta usando el array y usando using . listaTimbrados puede ya no contener todos los UUIDs buscados desde Excel
            List <NOM_CFDI_Timbrado> listaDeTimbrados = new List <NOM_CFDI_Timbrado>();

            using (var context = new RHEntities())
            {
                listaDeTimbrados = (from t in context.NOM_CFDI_Timbrado where arrarUids.Contains(t.FolioFiscalUUID) select t).ToList();
            }

            // armar la lista resumenXML
            List <ResumenXML> lResumenXML2 = (from item in listaDeTimbrados
                                              select new ResumenXML()
            {
                FechaTimbrado = item.FechaCertificacion.Value, RfcReceptor = item.RFCReceptor, Total = item.TotalRecibo, Uuid = item.FolioFiscalUUID
            }).ToList();



            // No comparacion por indices, usa foreach, primero obtengo fila excel y luego busco si existe en la listaXML
            // si existe lo comparo, si no existe sigo con el siguiente, que no se detenga
            List <ItemComparacion> listaComparacion = new List <ItemComparacion>();

            foreach (FilaExcel filaExcel in listaFilasExcel)
            {
                ResumenXML itemResumenXML = null;

                Func <ResumenXML, bool> apu = item =>
                {
                    if (item.Uuid == filaExcel.Uuid)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                };

                itemResumenXML = lResumenXML2.SingleOrDefault(apu);

                ItemComparacion itemComparacion = new ItemComparacion(filaExcel, itemResumenXML);
                itemComparacion.Comparar();
                listaComparacion.Add(itemComparacion);
            }

            return(listaComparacion);
        }
Ejemplo n.º 2
0
        //------------------Methods
        public List <ItemComparacion> ComparaContraBD()
        {
            int numeroFilas = MyDataTableExcel.Rows.Count; //son en numero de filas que en realidad tiene el archivo de excel

            List <FilaExcel> listaFilasExcel =
                (from DataRow fila in myDataTableExcel.Rows
                 let uuid = (string)fila[12]
                            let totalNeto = Decimal.Parse(fila[61].ToString())
                                            let rfcReceptor = (string)fila[4]
                                                              let fecha = (string)fila[0]
                                                                          let versionCFDI = (string)fila[17]
                                                                                            select new FilaExcel(uuid, totalNeto, rfcReceptor, fecha, versionCFDI)).ToList();

            //Recupero de la BD  y hago una lista

            #region ALEJANDRO
            //List<ResumenXML> listaResumenXML = new List<ResumenXML>();
            //RHEntities dContext = new RHEntities();
            //foreach (var item in listaFilasExcel)
            //{
            //    string uuidBuscado = item.Uuid;
            //    Func<NOM_CFDI_Timbrado, bool> apuBusqueda = itemComparacion =>
            //    {
            //        if (itemComparacion.FolioFiscalUUID == uuidBuscado)
            //        { return true; }
            //        else { return false; }
            //    };
            //    //Busca directo en  tabla de BD
            //    var registroBuscado = dContext.NOM_CFDI_Timbrado.Single(apuBusqueda);

            //    //trabajando con datetime
            //    ResumenXML resumenXML = new ResumenXML(registroBuscado.FechaCertificacion.Value, registroBuscado.FolioFiscalUUID, registroBuscado.TotalRecibo, registroBuscado.RFCReceptor);
            //    listaResumenXML.Add(resumenXML);
            //}
            #endregion


            #region EDWIN
            //1 hacer un array de uuid a buscar
            var arrayUuiDs = listaFilasExcel.Select(x => x.Uuid).ToArray();

            //2 hacer la busqueda del array usando using
            List <NOM_CFDI_Timbrado> listaTimbrados = new List <NOM_CFDI_Timbrado>();
            using (var context = new RHEntities())
            {
                listaTimbrados = (from t in context.NOM_CFDI_Timbrado
                                  where arrayUuiDs.Contains(t.FolioFiscalUUID)
                                  select t).ToList();
            }

            //3 armar la lista de resumen
            var listaResumenXML = (from r in listaTimbrados
                                   select new ResumenXML()
            {
                FechaTimbrado = r.FechaCertificacion.Value,
                RfcReceptor = r.RFCReceptor,
                Total = r.TotalRecibo,
                Uuid = r.FolioFiscalUUID
            }).ToList();

            #endregion


            //Recorro la lista recuperada de excel ó la recuperada de los XML
            // fisicos, preparo para comparar
            List <ItemComparacion> listaComparacion = new List <ItemComparacion>();
            for (int i = 0; i < listaFilasExcel.Count; i++)
            {
                FilaExcel       filaExcel  = listaFilasExcel.ElementAt(i);
                ResumenXML      resumenXML = listaResumenXML.ElementAt(i);
                ItemComparacion item       = new ItemComparacion(filaExcel, resumenXML);
                item.Comparar();  //aqui comparo

                listaComparacion.Add(item);
            }

            //return Json(listaComparacion, JsonRequestBehavior.AllowGet);
            return(listaComparacion);
        }