Отчет прайс-лист (некорректно выводит данные)

Если клиент давний, то необходимо добавить новый отчет по прайсу (есть 2 варианта сплошной и каждая группа с новой строки). А также выполнить скрипт (открыв для этого SQL Server и сделав предварительно резервную копию базы)

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE FUNCTION [dbo].[get_services_list] (
 @GroupId dbo.DT_ID
 )
 RETURNS
 @price_list_table table (GroupCode varchar(200), GroupName varchar(500),
 GroupId integer,
 ServiceCode varchar(200), ServiceName varchar (500), BaseCost money,
 ServiceId integer)
 AS
 BEGIN
 --INSERT INTO @price_list_table(GroupId) VALUES (-555);

IF ((SELECT COUNT(ID) FROM SERVICES WHERE ENABLED = 1 AND GROUPID = @GroupId) > 0)
 BEGIN
 INSERT INTO @price_list_table(GroupCode, GroupName, GroupId, ServiceCode, ServiceName, BaseCost, ServiceId)
 SELECT gs.code, gs.name, gs.id, s.code, s.name, s.basecost, s.id
 FROM groupservices gs
 LEFT JOIN services s ON s.groupid = gs.id
 WHERE gs.enabled = 1
 AND s.enabled = 1
 AND gs.ID = @GroupId
 ORDER BY s.CODE
 END;

IF ((SELECT COUNT(ID) FROM groupservices WHERE ENABLED = 1 AND OWNER = @GroupId) > 0)
 BEGIN
 declare @xGroupId dbo.DT_ID;
 declare group_list cursor local forward_only static
 for select gs.id
 from GROUPSERVICES gs
 where gs.ENABLED = 1 AND gs.OWNER = @GroupId
 order by gs.ID

open group_list;

fetch next from group_list into @xGroupId;

while @@FETCH_STATUS = 0
 begin
 INSERT INTO @price_list_table(GroupCode, GroupName, GroupId, ServiceCode, ServiceName, BaseCost, ServiceId)
 SELECT * FROM dbo.get_services_list(@xGroupId)

fetch next from group_list into @xGroupId;
 --if (@xGroupId > 17)
 -- break
 end;

CLOSE group_list
 DEALLOCATE group_list
 END;
 RETURN;
 END

GO

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *