// GET: ComisionesBP public ActionResult Resumen(string periodo, string sucursal) { if (Session["Codusr"] != null) { var context = new CentralDBContext(); var query = @"SELECT sucursal = CONVERT(int, x.codsuc), x.nombre, x.email, puntos = ROUND(SUM(puntos),0) FROM ( SELECT c.codsuc, e.codven, e.email, e.nombre, puntos = SUM(c.comisionven) FROM PAR_ComisionesBP c LEFT JOIN PAR_Emple e ON e.codven = c.codven WHERE c.periodo = @p0 AND e.inactivo = 0 AND e.funcionp = 'Vendedor' GROUP BY e.email, e.nombre, c.codsuc, e.codven UNION SELECT c.codsuc, e.codven, e.email, e.nombre, puntos = SUM(c.comisionsuc / ce.cantidad) FROM PAR_ComisionesBP c LEFT JOIN PAR_Emple e ON e.codsuc = c.codsuc LEFT JOIN(SELECT codsuc, cantidad = SUM(CASE WHEN rtrim(funcionp) <> 'Vendedor' OR(rtrim(funcionp) = 'Vendedor' AND rtrim(funcions) <> '') THEN 1 ELSE 0 END) FROM PAR_Emple WHERE inactivo = 0 GROUP BY codsuc) ce ON ce.codsuc = c.codsuc WHERE c.periodo = @p0 AND e.inactivo = 0 AND(rtrim(e.funcionp) <> 'Vendedor' OR(rtrim(e.funcionp) = 'Vendedor' AND rtrim(e.funcions) <> '')) GROUP BY e.email, e.nombre, c.codsuc, e.codven ) x GROUP BY x.codsuc, x.nombre, x.email ORDER BY x.codsuc, x.nombre"; var querysuc = @"SELECT sucursal = CONVERT(int, x.codsuc), x.nombre, x.email, puntos = ROUND(SUM(puntos),0) FROM ( SELECT c.codsuc, e.codven, e.email, e.nombre, puntos = SUM(c.comisionven) FROM PAR_ComisionesBP c LEFT JOIN PAR_Emple e ON e.codven = c.codven WHERE c.periodo = @p0 AND c.codsuc = @p1 AND e.inactivo = 0 AND e.funcionp = 'Vendedor' GROUP BY e.email, e.nombre, c.codsuc, e.codven UNION SELECT c.codsuc, e.codven, e.email, e.nombre, puntos = SUM(c.comisionsuc / ce.cantidad) FROM PAR_ComisionesBP c LEFT JOIN PAR_Emple e ON e.codsuc = c.codsuc LEFT JOIN(SELECT codsuc, cantidad = SUM(CASE WHEN rtrim(funcionp) <> 'Vendedor' OR(rtrim(funcionp) = 'Vendedor' AND rtrim(funcions) <> '') THEN 1 ELSE 0 END) FROM PAR_Emple WHERE inactivo = 0 GROUP BY codsuc) ce ON ce.codsuc = c.codsuc WHERE c.periodo = @p0 AND c.codsuc = @p1 AND e.inactivo = 0 AND(rtrim(e.funcionp) <> 'Vendedor' OR(rtrim(e.funcionp) = 'Vendedor' AND rtrim(e.funcions) <> '')) GROUP BY e.email, e.nombre, c.codsuc, e.codven ) x GROUP BY x.codsuc, x.nombre, x.email ORDER BY x.codsuc, x.nombre"; var PeriodoLst = new List <string>(); var PeriodoQry = from p in db.ComisionesBPs orderby p.Periodo select p.Periodo; PeriodoLst.AddRange(PeriodoQry.Distinct()); ViewBag.periodo = new SelectList(PeriodoLst); var SucursalLst = new List <string>(); var SucursalQry = from e in db.Empleados orderby e.CodSuc select e.CodSuc; SucursalLst.AddRange(SucursalQry.Distinct()); ViewBag.sucursal = new SelectList(SucursalLst); var resumenComisiones = new List <ViewResumenComisionesBP>(); ViewBag.Total = 0; if (!string.IsNullOrEmpty(periodo)) { if (!string.IsNullOrEmpty(sucursal)) { resumenComisiones = context.Database.SqlQuery <ViewResumenComisionesBP>(querysuc, periodo, sucursal).ToList(); } else { resumenComisiones = context.Database.SqlQuery <ViewResumenComisionesBP>(query, periodo).ToList(); } ViewBag.Total = resumenComisiones.Sum(x => x.Puntos); } return(View(resumenComisiones)); } else { return(RedirectToAction("Logueo", "Login", null)); } }