SqlReports

Добавление нового

4/25/2019 6:12:48 PM

Changes

Details

diff --git a/GetEncashmentsStats.sql b/GetEncashmentsStats.sql
new file mode 100644
index 0000000..4fca280
--- /dev/null
+++ b/GetEncashmentsStats.sql
@@ -0,0 +1,106 @@
+
+set noexec off
+go
+if object_id('GetEncashmentsStats') is not null
+begin
+	set noexec on
+end	
+go
+-- ������� ������ ������
+-- ���������� ������� �������� ���������
+create procedure dbo.GetEncashmentsStats as
+raiserror ('������ ������. ������ ��� ��������� �������', -- Message text.
+				16, -- Severity.
+				1 -- State.
+			);
+go
+set noexec off
+go
+alter procedure dbo.GetEncashmentsStats
+(
+	@CompanyID int,
+	@DateFrom DateTime,
+	@DateTo DateTime,
+	@ShopID int = null
+) 
+as
+
+begin
+
+--declare @CompanyID int
+--declare @DateFrom DateTime
+--declare @DateTo DateTime
+--declare @ShopID int
+
+--set @CompanyID = 1
+--set	@DateFrom = convert(DateTime, '15.04.2019', 104)	
+--set	@DateTo = convert(DateTime, '21.04.2019', 104)	
+	
+	declare @DateTo_Date DateTime
+	set @DateTo_Date = cast(@DateTo as Date)
+
+	set @DateTo = dateadd(ms, -2, dateadd(day, 1, @DateTo_Date))
+	
+	declare @EncashmentsList table (ID int identity(1,1), ShopID int, TerminalID nvarchar(256),  EncashmentDate DateTime, FromSessionID int, ToSessionID int) 
+	
+	insert into @EncashmentsList
+		(ShopID, TerminalID,  EncashmentDate, FromSessionID, ToSessionID) 
+		select 
+			t.ShopId,
+			e.TerminalId,
+			e.Timestamp as EncashmentDate,
+			e.FromSessionId,
+			e.ToSessionId
+
+		from dbo.Encashments e with (nolock)
+			inner join dbo.Terminals t with (nolock) on
+				t.Id = e.TerminalId
+			
+			inner join dbo.Shops s with (nolock) on
+					s.Id = t.ShopId
+				and s.CompanyId = @CompanyID
+		
+		where
+				e.Timestamp between @DateFrom and @DateTo
+			and (isnull(@ShopID, 0) = 0 or t.ShopId = @ShopID)
+		
+		declare @t1 table (ID int index IX1, EncashmentCount int, EncashmentSumm decimal(15, 2))
+		
+		insert into @t1
+			select
+				el.ID,
+				sl.Count as EncashmentCount,
+				Cast(sl.Value/100 as decimal(15, 2)) as EncashmentSumm
+
+			from  @EncashmentsList el
+				inner join dbo.Sessions ss with (nolock) on
+						ss.TerminalId = el.TerminalID
+					and	ss.SessionId between el.FromSessionID and el.ToSessionID
+					and (ss.Flags & 2) = 0 -- �������� ��������� ������
+
+				inner join dbo.Sales sl with (nolock) on
+						sl.TerminalId = el.TerminalID
+					and sl.SessionId = ss.SessionId	
+		
+		select
+			el.ShopID,
+			isnull(s.Description, s.Name) as ShopName,
+			el.EncashmentDate,
+			t.EncashmentCount,
+			t.EncashmentSumm
+
+		from (
+				select
+					t1.ID,
+					Sum(t1.EncashmentCount) as EncashmentCount,
+					Sum(t1.EncashmentSumm) as EncashmentSumm
+
+				from @t1 t1
+				group by t1.ID
+			) as t
+			
+			inner join @EncashmentsList el on el.ID = t.ID
+			inner join dbo.Shops s with (nolock) on s.Id = el.ShopID
+				  
+
+end
\ No newline at end of file