martes, mayo 20, 2014

Mini-CRM en ASP.Net (IV) “En construcción!”

Añadiendo la entidad VentasPorMarca

Los comerciales necesitan el cuadro de ventas por marca, en el que aparezcan cantidad e importe del año en curso y del anterior. Mis datos están en una tabla en la que cada línea es una agrupación de ventas por ejercicio, mes, zona y marca. Lo primero que necesito es una vista en que se muestren las ventas por zona y marca, del año en curso y del anterior. La creo en la base de datos así:

CREATE VIEW [dbo].[CRM_VentasPorMarcaYZona]
WITH SCHEMABINDING
AS
SELECT TOP
(100) PERCENT zm.[Clasif_ neumático] as Gama, zm.Marca, zm.Comercial as Zona, vPrev.i AS ImporteAnt, vPrev.c AS CantidadAnt, vCurr.i AS ImporteAct
,
vCurr.c AS
CantidadAct
FROM (SELECT Marca, [Clasif_ neumático],
Comercial
FROM dbo.[Cuadro mando Neumalia] AS
c
GROUP BY [Clasif_ neumático], Marca,
Comercial
HAVING ([Clasif_ neumático] <> '')) AS zm
LEFT OUTER JOIN
(
SELECT Año, Marca AS m, Comercial AS z, SUM([Imp_ ventas]) AS i, SUM(cast([Cdad_ ventas] as integer)) AS
c
FROM dbo.
[Cuadro mando Neumalia]
GROUP BY Año, Marca,
Comercial
HAVING (Año = DATEPART(year, GETDATE()) - 1)) AS vPrev ON zm.Marca = vPrev.m AND zm.Comercial = vPrev.z
LEFT OUTER JOIN
(
SELECT Año, Marca AS m, Comercial AS z, SUM([Imp_ ventas]) AS i, SUM(cast([Cdad_ ventas] as integer)) AS
c
FROM dbo.[Cuadro mando Neumalia] AS
[Cuadro mando Neumalia_1]
GROUP BY Año, Marca,
Comercial
HAVING (Año = DATEPART(year, GETDATE()))) AS vCurr ON zm.Marca = vCurr.m AND zm.Comercial = vCurr.
z
ORDER BY zm.Marca

A continuación creo la clase VentasPorMarca:

namespace NeumaliaCRM.Models
{
using
System;
using
System.Collections.Generic;
using
System.ComponentModel.DataAnnotations;
using
System.ComponentModel.DataAnnotations.Schema;
using
System.Data.Entity.Spatial;

[
Table("CRM_VentasPorMarcaYZona"
)]
public partial class
VentasPorMarca
{
[
Key
]
[
Column
(Order = 0)]
[
StringLength
(30)]
public string Gama { get; set
; }

[
Key
]
[
Column
(Order = 1)]
[
StringLength
(10)]
public string Marca { get; set
; }

[
Key
]
[
Column
(Order = 2)]
[
StringLength
(10)]
public string Zona { get; set
; }

public decimal? ImporteAnt { get; set
; }

public int? CantidadAnt { get; set
; }

public decimal? ImporteAct { get; set
; }

public int? CantidadAct { get; set
; }
}
}

También se puede crear a partir de la vista añadiendo

No hay comentarios:

Publicar un comentario