public List<ReportePrepago> ReporteTransaccionesSuma(string tipotransaccion, string fechadesde, string fechahasta, string docnumber)
 {
     AfiliadoSumaIndex afiliado = repAfiliado.Find(docnumber, "", "", "", "").First();
     string fechasdesdemod = fechadesde.Substring(6, 4) + fechadesde.Substring(3, 2) + fechadesde.Substring(0, 2);
     string fechahastamod = fechahasta.Substring(6, 4) + fechahasta.Substring(3, 2) + fechahasta.Substring(0, 2);
     List<ReportePrepago> reporte = new List<ReportePrepago>();
     EncabezadoReporte encabezado = new EncabezadoReporte();
     ReportePrepago linea = new ReportePrepago();
     List<PLZ_GETREPORT_Result> consulta = new List<PLZ_GETREPORT_Result>();
     encabezado.nombreReporte = "Reporte de Transacciones Suma";
     encabezado.parametrotipoconsultaReporte = docnumber + " " + afiliado.name + " " + afiliado.lastname1;
     encabezado.fechainicioReporte = fechadesde;
     encabezado.fechafinReporte = fechahasta;
     encabezado.tipotransaccionReporte = tipotransaccion;
     using (CardsEntities db = new CardsEntities())
     {
         db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
         if (tipotransaccion == "Todas")
         {
             consulta = db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, docnumber.Substring(2), Globals.TIPO_CUENTA_SUMA, "NULL").ToList();
         }
         foreach (PLZ_GETREPORT_Result fila in consulta.Where(x => x.TRANSCODE != 121))
         {
             linea = new ReportePrepago()
             {
                 Beneficiario = new BeneficiarioPrepagoIndex()
                 {
                     Afiliado = afiliado
                 },
                 fecha = fila.BATCHTIME == null ? DateTime.ParseExact(fila.FECHA.Substring(6, 2) + "/" + fila.FECHA.Substring(4, 2) + "/" + fila.FECHA.Substring(0, 4), "dd/MM/yyyy", CultureInfo.InvariantCulture) : DateTime.ParseExact(fila.FECHA.Substring(6, 2) + "/" + fila.FECHA.Substring(4, 2) + "/" + fila.FECHA.Substring(0, 4) + " " + fila.BATCHTIME.Substring(0, 2) + ":" + fila.BATCHTIME.Substring(2, 2) + ":" + fila.BATCHTIME.Substring(4, 2), "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                 monto = fila.SALDO.Value,
                 detalle = fila.ISODESCRIPTION,
                 tipo = fila.TRANSCODE + "-" + fila.TRANSNAME,
                 numerotarjeta = Convert.ToDecimal(fila.PAN),
                 batchid = fila.BATCHID.ToString(),
                 Encabezado = encabezado
             };
             if (fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_ANULACION_TRANSFERENCIA_CREDITO_SUMA || fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_ANULACION_TRANSFERENCIA_DEBITO_SUMA)
             {
                 linea.detalle  = linea.detalle  + " (" + fila.B037 + ")";
             }
             if (fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_CANJE_SUMA || fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_TRANSFERENCIA_DEBITO_SUMA || fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_ANULACION_TRANSFERENCIA_CREDITO_SUMA)
             {
                 linea.monto = linea.monto * Convert.ToInt32(Globals.FACTOR_CANJE);
             }
             reporte.Add(linea);
         }
     }
     reporte = reporte.OrderBy(x => x.fecha).ToList();
     if (reporte.Count == 0)
     {
         linea = new ReportePrepago()
         {
             Encabezado = encabezado
         };
         reporte.Add(linea);
     }
     return reporte;
 }
 public List<ReportePrepago> ReporteTransaccionesPrepago(string tipotransaccion, string fechadesde, string fechahasta, string docnumber)
 {
     AfiliadoSumaIndex afiliado = repAfiliado.Find(docnumber, "", "", "", "").First();
     string fechasdesdemod = fechadesde.Substring(6, 4) + fechadesde.Substring(3, 2) + fechadesde.Substring(0, 2);
     string fechahastamod = fechahasta.Substring(6, 4) + fechahasta.Substring(3, 2) + fechahasta.Substring(0, 2);
     List<ReportePrepago> reporte = new List<ReportePrepago>();
     EncabezadoReporte encabezado = new EncabezadoReporte();
     ReportePrepago linea = new ReportePrepago();
     List<PLZ_GETREPORT_Result> consulta = new List<PLZ_GETREPORT_Result>();
     encabezado.nombreReporte = "Reporte de Transacciones Prepago";
     encabezado.parametrotipoconsultaReporte = docnumber + " " + afiliado.name + " " + afiliado.lastname1;
     encabezado.fechainicioReporte = fechadesde;
     encabezado.fechafinReporte = fechahasta;
     encabezado.tipotransaccionReporte = tipotransaccion;
     using (CardsEntities db = new CardsEntities())
     {
         db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
         if (tipotransaccion == "Todas")
         {
             consulta = db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, docnumber.Substring(2), Globals.TIPO_CUENTA_PREPAGO, "NULL").ToList();
         }
         foreach (PLZ_GETREPORT_Result fila in consulta.Where(x=>x.TRANSCODE != 121))
         {
             linea = new ReportePrepago()
             {
                 Beneficiario = new BeneficiarioPrepagoIndex()
                 {
                     Afiliado = afiliado
                 },
                 fecha = fila.BATCHTIME == null ? DateTime.ParseExact(fila.FECHA.Substring(6, 2) + "/" + fila.FECHA.Substring(4, 2) + "/" + fila.FECHA.Substring(0, 4), "dd/MM/yyyy", CultureInfo.InvariantCulture) : DateTime.ParseExact(fila.FECHA.Substring(6, 2) + "/" + fila.FECHA.Substring(4, 2) + "/" + fila.FECHA.Substring(0, 4) + " " + fila.BATCHTIME.Substring(0, 2) + ":" + fila.BATCHTIME.Substring(2, 2) + ":" + fila.BATCHTIME.Substring(4, 2), "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                 monto = fila.SALDO.Value,
                 detalle = fila.ISODESCRIPTION,
                 tipo = fila.TRANSCODE + "-" + fila.TRANSNAME,
                 numerotarjeta = Convert.ToDecimal(fila.PAN),
                 batchid = fila.BATCHID.ToString(),
                 Encabezado = encabezado
             };
             if (fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_ANULACION_RECARGA_PREPAGO || fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_ANULACION_TRANSFERENCIA_CREDITO_PREPAGO || fila.TRANSCODE.Value.ToString() == Globals.TRANSCODE_ANULACION_TRANSFERENCIA_DEBITO_PREPAGO)
             {
                 linea.detalle = linea.detalle + " (" + fila.B037 + ")";
             }
             if (linea.detalle.Contains("offline"))
             {
                 //buscar info en FueraDeLinea
                 using (LealtadEntities db2 = new LealtadEntities())
                 {
                     db2.Database.Connection.ConnectionString = AppModule.ConnectionString("SumaLealtad");
                     string operacion = linea.batchid.ToString();
                     FueraDeLinea f = db2.FueraDeLineas.FirstOrDefault(t => t.batchid.Equals(operacion));
                     if (f != null)
                     {
                         string sucursal = repAfiliado.Find(afiliado.id).StoreOptions.Where(c => c.id != null).FirstOrDefault(x => x.id.Equals(f.store_code)).sucursal;
                         linea.detalle = linea.detalle + " (origen: " + sucursal + ", motivo: " + f.observaciones + ")";
                     }
                 }
             }
             reporte.Add(linea);
         }
     }
     reporte = reporte.OrderBy(x => x.fecha).ToList();
     if (reporte.Count == 0)
     {
         linea = new ReportePrepago()
         {
             Encabezado = encabezado
         };
         reporte.Add(linea);
     }
     return reporte;
 }
 public List<ReportePrepago> ReporteDeComprasDetallado(string tiporeporte, string fechadesde, string fechahasta, string modotrans, int idCliente)
 {
     string fechasdesdemod = fechadesde.Substring(6, 4) + fechadesde.Substring(3, 2) + fechadesde.Substring(0, 2);
     string fechahastamod = fechahasta.Substring(6, 4) + fechahasta.Substring(3, 2) + fechahasta.Substring(0, 2);
     List<ReportePrepago> reporte = new List<ReportePrepago>();
     EncabezadoReporte encabezado = new EncabezadoReporte();
     ReportePrepago linea = new ReportePrepago();
     List<PLZ_GETREPORT_Result> consulta = new List<PLZ_GETREPORT_Result>();
     #region Por Cliente específico, Detallado por Beneficiario
     if (tiporeporte == "detallado")
     {
         List<BeneficiarioPrepagoIndex> beneficiarios = repCliente.FindBeneficiarios(idCliente, "", "", "", "", "").ToList();
         encabezado.nombreReporte = "Reporte de Compras Detallado";
         encabezado.tipodetalleReporte = "Detallado por Beneficiario";
         encabezado.tipoconsultaReporte = "Por Cliente";
         encabezado.parametrotipoconsultaReporte = beneficiarios.First().Cliente.rifCliente + " " + beneficiarios.First().Cliente.nameCliente;
         encabezado.fechainicioReporte = fechadesde;
         encabezado.fechafinReporte = fechahasta;
         encabezado.modotransaccionReporte = modotrans;
         if (beneficiarios.Count != 0)
         {
             using (CardsEntities db = new CardsEntities())
             {
                 foreach (BeneficiarioPrepagoIndex b in beneficiarios)
                 {
                     db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
                     consulta = db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO).ToList();
                     if (modotrans == "Fuera de Línea")
                     {
                         consulta = consulta.Where(x => x.ISODESCRIPTION.Contains("offline")).ToList();
                     }
                     else if (modotrans == "En Línea")
                     {
                         consulta = consulta.Where(x => !x.ISODESCRIPTION.Contains("offline")).ToList();
                     }
                     foreach (PLZ_GETREPORT_Result fila in consulta)
                     {
                         linea = new ReportePrepago()
                         {
                             Beneficiario = b,
                             fecha = fila.BATCHTIME == null ? DateTime.ParseExact(fila.FECHA.Substring(6, 2) + "/" + fila.FECHA.Substring(4, 2) + "/" + fila.FECHA.Substring(0, 4), "dd/MM/yyyy", CultureInfo.InvariantCulture) : DateTime.ParseExact(fila.FECHA.Substring(6, 2) + "/" + fila.FECHA.Substring(4, 2) + "/" + fila.FECHA.Substring(0, 4) + " " + fila.BATCHTIME.Substring(0, 2) + ":" + fila.BATCHTIME.Substring(2, 2) + ":" + fila.BATCHTIME.Substring(4, 2), "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture),
                             monto = fila.SALDO.Value,
                             detalle = fila.ISODESCRIPTION,
                             tipo = "145-Compra",
                             numerotarjeta = Convert.ToDecimal(fila.PAN),
                             batchid = fila.BATCHID.ToString(),
                             Encabezado = encabezado
                         };
                         if (linea.detalle.Contains("offline"))
                         {
                             //buscar info en FueraDeLinea
                             using (LealtadEntities db2 = new LealtadEntities())
                             {
                                 db2.Database.Connection.ConnectionString = AppModule.ConnectionString("SumaLealtad");
                                 string operacion = linea.batchid.ToString();
                                 FueraDeLinea f = db2.FueraDeLineas.FirstOrDefault(t => t.batchid.Equals(operacion));
                                 if (f != null)
                                 {
                                     string sucursal = repAfiliado.Find(b.Afiliado.id).StoreOptions.Where(c => c.id != null).FirstOrDefault(x => x.id.Equals(f.store_code)).sucursal;
                                     linea.detalle = linea.detalle + " (origen: " + sucursal + ", motivo: " + f.observaciones + ")";
                                 }
                             }
                         }
                         reporte.Add(linea);
                     }
                 }
             }
         }
         reporte = reporte.OrderBy(x => x.fecha).ToList();
     }
     #endregion
     #region Por Cliente específico, Consolidado por Beneficiario
     else if (tiporeporte == "consolidado")
     {
         List<BeneficiarioPrepagoIndex> beneficiarios = repCliente.FindBeneficiarios(idCliente, "", "", "", "", "").OrderBy(x => x.Afiliado.docnumber).ToList();
         encabezado.nombreReporte = "Reporte de Compras Detallado";
         encabezado.tipodetalleReporte = "Consolidado por Beneficiario";
         encabezado.tipoconsultaReporte = "Por Cliente";
         encabezado.parametrotipoconsultaReporte = beneficiarios.First().Cliente.rifCliente + " " + beneficiarios.First().Cliente.nameCliente;
         encabezado.fechainicioReporte = fechadesde;
         encabezado.fechafinReporte = fechahasta;
         encabezado.modotransaccionReporte = modotrans;
         decimal TotalCompras = 0;
         if (beneficiarios.Count != 0)
         {
             using (CardsEntities db = new CardsEntities())
             {
                 foreach (BeneficiarioPrepagoIndex b in beneficiarios)
                 {
                     TotalCompras = 0;
                     db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
                     consulta = db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO).ToList();
                     if (modotrans == "Fuera de Línea")
                     {
                         consulta = consulta.Where(x => x.ISODESCRIPTION.Contains("offline")).ToList();
                     }
                     else if (modotrans == "En Línea")
                     {
                         consulta = consulta.Where(x => !x.ISODESCRIPTION.Contains("offline")).ToList();
                     }
                     foreach (PLZ_GETREPORT_Result fila in consulta)
                     {
                         TotalCompras = TotalCompras + fila.SALDO.Value;
                     }
                     // NO INCLUYO BENEFICIARIOS SIN COMPRAS
                     if (TotalCompras != 0)
                     {
                         linea = new ReportePrepago()
                         {
                             Beneficiario = b,
                             monto = TotalCompras,
                             tipo = "145-Compra",
                             Encabezado = encabezado
                         };
                         reporte.Add(linea);
                     }
                 }
             }
         }
     }
     #endregion
     if (reporte.Count == 0)
     {
         linea = new ReportePrepago()
         {
             Encabezado = encabezado
         };
         reporte.Add(linea);
     }
     return reporte;
 }
 public List<ReportePrepago> ReporteDeComprasConsolidado(string tiporeporte, string fechadesde, string fechahasta, string modotrans, int idCliente)
 {
     string fechasdesdemod = fechadesde.Substring(6, 4) + fechadesde.Substring(3, 2) + fechadesde.Substring(0, 2);
     string fechahastamod = fechahasta.Substring(6, 4) + fechahasta.Substring(3, 2) + fechahasta.Substring(0, 2);
     List<ReportePrepago> reporte = new List<ReportePrepago>();
     EncabezadoReporte encabezado = new EncabezadoReporte();
     ReportePrepago linea = new ReportePrepago();
     List<PLZ_GETREPORT_Result> consulta = new List<PLZ_GETREPORT_Result>();
     decimal TotalCompras;
     #region Por Cliente específico
     if (tiporeporte == "uno")
     {
         List<BeneficiarioPrepagoIndex> beneficiarios = repCliente.FindBeneficiarios(idCliente, "", "", "", "", "").ToList();
         encabezado.nombreReporte = "Reporte de Compras Consolidado";
         encabezado.tipoconsultaReporte = "Por Cliente";
         encabezado.parametrotipoconsultaReporte = beneficiarios.First().Cliente.rifCliente + " " + beneficiarios.First().Cliente.nameCliente;
         encabezado.fechainicioReporte = fechadesde;
         encabezado.fechafinReporte = fechahasta;
         encabezado.modotransaccionReporte = modotrans;
         TotalCompras = 0;
         if (beneficiarios.Count != 0)
         {
             using (CardsEntities db = new CardsEntities())
             {
                 foreach (BeneficiarioPrepagoIndex b in beneficiarios)
                 {
                     db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
                     consulta = db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO).ToList();
                     if (modotrans == "Offline")
                     {
                         consulta = consulta.Where(x => x.ISODESCRIPTION.Contains("offline")).ToList();
                     }
                     else if (modotrans == "En Linea")
                     {
                         consulta = consulta.Where(x => !x.ISODESCRIPTION.Contains("offline")).ToList();
                     }
                     foreach (PLZ_GETREPORT_Result fila in consulta)
                     {
                         TotalCompras = TotalCompras + fila.SALDO.Value;
                     }
                 }
                 //NO INCLUYO CLIENTES SIN COMPRAS
                 if (TotalCompras != 0)
                 {
                     linea = new ReportePrepago()
                     {
                         Beneficiario = new BeneficiarioPrepagoIndex()
                         {
                             Cliente = beneficiarios.First().Cliente
                         },
                         monto = TotalCompras,
                         tipo = "145-Compra",
                         Encabezado = encabezado
                     };
                     reporte.Add(linea);
                 }
             }
         }
     }
     #endregion
     #region Todos los Clientes
     else if (tiporeporte == "todos")
     {
         List<ClientePrepago> clientes = repCliente.Find("", "").OrderBy(x => x.nameCliente).ToList();
         encabezado.nombreReporte = "Reporte de Compras Consolidado";
         encabezado.tipoconsultaReporte = "Por Cliente";
         encabezado.parametrotipoconsultaReporte = "Todos";
         encabezado.fechainicioReporte = fechadesde;
         encabezado.fechafinReporte = fechahasta;
         encabezado.modotransaccionReporte = modotrans;
         foreach (ClientePrepago c in clientes)
         {
             TotalCompras = 0;
             List<BeneficiarioPrepagoIndex> beneficiarios = repCliente.FindBeneficiarios(c.idCliente, "", "", "", "", "").OrderBy(x => x.Afiliado.id).ToList();
             if (beneficiarios.Count != 0)
             {
                 using (CardsEntities db = new CardsEntities())
                 {
                     foreach (BeneficiarioPrepagoIndex b in beneficiarios)
                     {
                         db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
                         consulta = db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO).ToList();
                         if (modotrans == "Offline")
                         {
                             consulta = consulta.Where(x => x.ISODESCRIPTION.Contains("offline")).ToList();
                         }
                         else if (modotrans == "En Linea")
                         {
                             consulta = consulta.Where(x => !x.ISODESCRIPTION.Contains("offline")).ToList();
                         }
                         foreach (PLZ_GETREPORT_Result fila in consulta)
                         {
                             TotalCompras = TotalCompras + fila.SALDO.Value;
                         }
                     }
                     //NO INCLUYO CLIENTES SIN COMPRAS
                     if (TotalCompras != 0)
                     {
                         linea = new ReportePrepago()
                         {
                             Beneficiario = new BeneficiarioPrepagoIndex()
                             {
                                 Cliente = c
                             },
                             monto = TotalCompras,
                             tipo = "145-Compra",
                             Encabezado = encabezado
                         };
                         reporte.Add(linea);
                     }
                 }
             }
         }
     }
     #endregion
     if (reporte.Count == 0)
     {
         linea = new ReportePrepago()
         {
             Encabezado = encabezado
         };
         reporte.Add(linea);
     }
     return reporte;
 }
 public List<ReportePrepago> ReporteComprasxCliente(string tiporeporte, string fechadesde, string fechahasta, string modotrans, int idCliente = 0)
 {
     string fechasdesdemod = fechadesde.Substring(6, 4) + fechadesde.Substring(3, 2) + fechadesde.Substring(0, 2);
     string fechahastamod = fechahasta.Substring(6, 4) + fechahasta.Substring(3, 2) + fechahasta.Substring(0, 2);
     List<ReportePrepago> reporte = new List<ReportePrepago>();
     EncabezadoReporte encabezado = new EncabezadoReporte();
     #region Por Cliente específico
     if (tiporeporte == "uno")
     {
         List<BeneficiarioPrepagoIndex> beneficiarios = repCliente.FindBeneficiarios(idCliente, "", "", "", "", "").OrderBy(x => x.Afiliado.id).ToList();
         encabezado.nombreReporte = "Reporte de Compras";
         encabezado.tipoconsultaReporte = "Por Cliente";
         encabezado.parametrotipoconsultaReporte = beneficiarios.First().Cliente.rifCliente + " " + beneficiarios.First().Cliente.nameCliente;
         encabezado.fechainicioReporte = fechadesde;
         encabezado.fechafinReporte = fechahasta;
         encabezado.modotransaccionReporte = modotrans;
         foreach (BeneficiarioPrepagoIndex b in beneficiarios)
         {
             //string movimientosPrepagoJson = WSL.Cards.getReport(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO);
             //if (WSL.Cards.ExceptionServicioCards(movimientosPrepagoJson))
             //{
             //    return null;
             //}
             //List<Movimiento> movimientosPrepago = (List<Movimiento>)JsonConvert.DeserializeObject<List<Movimiento>>(movimientosPrepagoJson).OrderBy(x => x.fecha).ToList();
             List<Movimiento> movimientosPrepago = new List<Movimiento>();
             using (CardsEntities db = new CardsEntities())
             {
                 db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
                 foreach (PLZ_GETREPORT_Result fila in db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO))
                 {
                     if (fila.TRANSCODE.Value.ToString() != Globals.TRANSCODE_CONSULTA_DE_SALDO)
                     {
                         Movimiento mov = new Movimiento()
                         {
                             fecha = fila.FECHA,
                             batchtime = fila.BATCHTIME,
                             saldo = fila.SALDO.Value,
                             isodescription = fila.ISODESCRIPTION,
                             transcode = fila.TRANSCODE.ToString(),
                             transname = fila.TRANSNAME,
                             pan = fila.PAN,
                             batchid = fila.BATCHID
                         };
                         movimientosPrepago.Add(mov);
                     }
                 }
             } foreach (Movimiento m in movimientosPrepago)
             {
                 ReportePrepago linea = new ReportePrepago()
                 {
                     Beneficiario = b,
                     fecha = DateTime.ParseExact(m.fecha.Substring(6, 2) + "/" + m.fecha.Substring(4, 2) + "/" + m.fecha.Substring(0, 4), "dd/MM/yyyy", CultureInfo.InvariantCulture),
                     monto = Convert.ToDecimal(m.saldo),
                     detalle = m.isodescription,
                     tipo = m.transcode + "-" + m.transname,
                     numerotarjeta = Convert.ToDecimal(m.pan),
                     batchid = m.batchid.ToString(),
                     Encabezado = encabezado
                 };
                 if (modotrans == "En Linea")
                 {
                     if (!linea.detalle.Contains("offline"))
                     {
                         reporte.Add(linea);
                     }
                 }
                 else if (modotrans == "Offline")
                 {
                     if (linea.detalle.Contains("offline"))
                     {
                         reporte.Add(linea);
                     }
                 }
                 else
                 {
                     reporte.Add(linea);
                 }
             }
         }
     }
     #endregion
     #region Todos los Clientes
     else if (tiporeporte == "todos")
     {
         ClientePrepagoRepository repCliente = new ClientePrepagoRepository();
         List<ClientePrepago> clientes = repCliente.Find("", "").OrderBy(x => x.idCliente).ToList();
         encabezado.nombreReporte = "Reporte de Compras";
         encabezado.tipoconsultaReporte = "Por Cliente";
         encabezado.parametrotipoconsultaReporte = "Todos";
         encabezado.fechainicioReporte = fechadesde;
         encabezado.fechafinReporte = fechahasta;
         encabezado.modotransaccionReporte = modotrans;
         foreach (ClientePrepago c in clientes)
         {
             List<BeneficiarioPrepagoIndex> beneficiarios = repCliente.FindBeneficiarios(c.idCliente, "", "", "", "", "").OrderBy(x => x.Afiliado.id).ToList();
             foreach (BeneficiarioPrepagoIndex b in beneficiarios)
             {
                 //string movimientosPrepagoJson = WSL.Cards.getReport(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO);
                 //if (WSL.Cards.ExceptionServicioCards(movimientosPrepagoJson))
                 //{
                 //    return null;
                 //}
                 //List<Movimiento> movimientosPrepago = (List<Movimiento>)JsonConvert.DeserializeObject<List<Movimiento>>(movimientosPrepagoJson).OrderBy(x => x.fecha).ToList();
                 List<Movimiento> movimientosPrepago = new List<Movimiento>();
                 using (CardsEntities db = new CardsEntities())
                 {
                     db.Database.Connection.ConnectionString = AppModule.ConnectionString("Cards");
                     foreach (PLZ_GETREPORT_Result fila in db.PLZ_GETREPORT(fechasdesdemod, fechahastamod, b.Afiliado.docnumber.Substring(2), "NULL", Globals.TRANSCODE_COMPRA_PREPAGO))
                     {
                         if (fila.TRANSCODE.Value.ToString() != Globals.TRANSCODE_CONSULTA_DE_SALDO)
                         {
                             Movimiento mov = new Movimiento()
                             {
                                 fecha = fila.FECHA,
                                 batchtime = fila.BATCHTIME,
                                 saldo = fila.SALDO.Value,
                                 isodescription = fila.ISODESCRIPTION,
                                 transcode = fila.TRANSCODE.ToString(),
                                 transname = fila.TRANSNAME,
                                 pan = fila.PAN,
                                 batchid = fila.BATCHID
                             };
                             movimientosPrepago.Add(mov);
                         }
                     }
                 }
                 foreach (Movimiento m in movimientosPrepago)
                 {
                     ReportePrepago linea = new ReportePrepago()
                     {
                         Beneficiario = b,
                         fecha = DateTime.ParseExact(m.fecha.Substring(6, 2) + "/" + m.fecha.Substring(4, 2) + "/" + m.fecha.Substring(0, 4), "dd/MM/yyyy", CultureInfo.InvariantCulture),
                         monto = Convert.ToDecimal(m.saldo),
                         detalle = m.isodescription,
                         tipo = m.transcode + "-" + m.transname,
                         numerotarjeta = Convert.ToDecimal(m.pan),
                         batchid = m.batchid.ToString(),
                         Encabezado = encabezado
                     };
                     if (modotrans == "En Linea")
                     {
                         if (!linea.detalle.Contains("offline"))
                         {
                             reporte.Add(linea);
                         }
                     }
                     else if (modotrans == "Offline")
                     {
                         if (linea.detalle.Contains("offline"))
                         {
                             reporte.Add(linea);
                         }
                     }
                     else
                     {
                         reporte.Add(linea);
                     }
                 }
             }
         }
     }
     #endregion
     if (reporte.Count == 0)
     {
         ReportePrepago r = new ReportePrepago()
         {
             Encabezado = encabezado
         };
         reporte.Add(r);
     }
     return reporte.OrderBy(x => x.fecha).ToList();
 }