Advertisement
RomioSul

gdrhj

May 2nd, 2022
1,428
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 8.50 KB | None | 0 0
  1. ALTER PROCEDURE [dbo].[REGISTER_Review_sp]
  2.     @p_Mode             int,
  3.     @p_OrderID          int,
  4.     @p_ReviewID         int,
  5.     @p_DecreeID         int,
  6.     @p_ReportID         int,
  7.     @p_Login            varchar(50),
  8.     @p_Reviewer         varchar(50),
  9.     @p_Status           int,
  10.     @p_Note             varchar(8000),
  11.     @p_ReviewDueDate    varchar(10),
  12.     @p_WithMail         bit,
  13.     @p_Executor         varchar(50),
  14.     @p_Report           varchar(8000),
  15.     @p_EditedBy         varchar(50),
  16.     @p_Output           varchar(20) output
  17. AS
  18. BEGIN
  19.     SET NOCOUNT ON
  20.  
  21.     DECLARE
  22.         @l_ReviewID     int = null,
  23.         @l_DecreeID     int = 0,
  24.         @l_ReportID     int = 0,
  25.         @l_Author       varchar(50),
  26.         @l_now          datetime
  27.  
  28.     set @p_Output = ''
  29.     set @l_now = getdate()
  30.  
  31.     declare
  32.         @exists bit = null,
  33.         @is_decree_report bit = null
  34.  
  35.     select @exists=1, @l_Author=Login from [dbo].[Orders_tb] where TID=@p_OrderID
  36.  
  37.     set @is_decree_report = case when @p_Status=9 and @p_Login=@p_Executor then 1 else 0 end
  38.  
  39.     if @exists = 1
  40.     begin
  41.         if @p_ReviewID = 0 begin
  42.             INSERT INTO [dbo].[Reviews_tb](
  43.                 OrderID,
  44.                 Login,
  45.                 Reviewer,
  46.                 Status,
  47.                 Note,
  48.                 RD
  49.             ) VALUES (
  50.                 @p_OrderID,
  51.                 @p_Login,
  52.                 @p_Reviewer,
  53.                 @p_Status,
  54.                 @p_Note,
  55.                 @l_now
  56.             )
  57.  
  58.             if @@error != 0
  59.                 raiserror('ошибка добавления рецензии',16,1)
  60.  
  61.             select @l_ReviewID = CAST(scope_identity() AS int)
  62.         end else if @is_decree_report = 0 begin
  63.             UPDATE [dbo].[Reviews_tb] SET Login=@p_Login, Reviewer=@p_Reviewer, Note=@p_Note, RD=@l_now WHERE TID=@p_ReviewID
  64.  
  65.             if @@error != 0
  66.                 raiserror('ошибка обновления рецензии',16,1)
  67.        
  68.             set @l_ReviewID = @p_ReviewID
  69.         end else
  70.             set @l_ReviewID = @p_ReviewID
  71.  
  72.         if (@p_Login = 'aybazov' or @p_Login = @l_Author) and @p_Status < 5 begin
  73.             UPDATE [dbo].[Orders_tb] SET Status=@p_Status WHERE TID=@p_OrderID
  74.  
  75.             if @p_Status = 2
  76.                 UPDATE [dbo].[OrderDates_tb] SET Approved=@l_now WHERE OrderID=@p_OrderID
  77.         end
  78.  
  79.         if @@error != 0
  80.             raiserror('ошибка смены статуса',16,1)
  81.  
  82.         else if @p_Status = 4 and @p_ReviewDueDate != ''
  83.             UPDATE [dbo].[OrderDates_tb] SET ReviewDueDate=@p_ReviewDueDate, WithMail=@p_WithMail WHERE OrderID=@p_OrderID
  84.  
  85.         else if @p_Status = 6
  86.             UPDATE [dbo].[OrderDates_tb] SET Paid=case when @p_ReviewDueDate='' then @l_now else @p_ReviewDueDate end WHERE OrderID=@p_OrderID
  87.  
  88.         else if @p_Status = 7
  89.             UPDATE [dbo].[OrderDates_tb] SET Delivered=case when @p_ReviewDueDate='' then @l_now else @p_ReviewDueDate end WHERE OrderID=@p_OrderID
  90.  
  91.         else if @p_Status = 10
  92.             UPDATE [dbo].[OrderDates_tb] SET AuditDate=@l_now WHERE OrderID=@p_OrderID
  93.  
  94.         else if @p_Status = 12
  95.             UPDATE [dbo].[OrderDates_tb] SET Validated=@l_now WHERE OrderID=@p_OrderID
  96.  
  97.         if @@error != 0
  98.             raiserror('ошибка регистрации даты рецензии',16,1)
  99.         --
  100.         -- Add Decree Executor
  101.         --
  102.         if @p_Status = 9
  103.         begin
  104.             if @p_DecreeID = 0 begin
  105.                 INSERT INTO [dbo].[Decrees_tb](
  106.                     OrderID,
  107.                     ReviewID,
  108.                     Login,
  109.                     Status,
  110.                     DueDate,
  111.                     ReportID,
  112.                     EditedBy,
  113.                     RD
  114.                 ) VALUES (
  115.                     @p_OrderID,
  116.                     @l_ReviewID,
  117.                     @p_Executor,
  118.                     0,
  119.                     @p_ReviewDueDate,
  120.                     null,
  121.                     @p_EditedBy,
  122.                     @l_now
  123.                 )
  124.  
  125.                 if @@error != 0
  126.                     raiserror('ошибка добавления поручения',16,1)
  127.  
  128.                 select @l_DecreeID = CAST(scope_identity() AS int)
  129.            
  130.             end else begin
  131.                 if @is_decree_report = 1 begin
  132.                     if @p_ReportID = 0 begin
  133.                         INSERT INTO [dbo].[Reviews_tb](
  134.                             OrderID,
  135.                             Login,
  136.                             Reviewer,
  137.                             Status,
  138.                             Note,
  139.                             RD
  140.                         ) VALUES (
  141.                             @p_OrderID,
  142.                             @p_Executor,
  143.                             @p_Reviewer,
  144.                             5,
  145.                             @p_Report,
  146.                             @l_now
  147.                         )
  148.  
  149.                         if @@error != 0
  150.                             raiserror('ошибка добавления отчета исполнителя',16,1)
  151.  
  152.                         select @l_ReportID = CAST(scope_identity() AS int)
  153.  
  154.                     end else begin
  155.                         UPDATE [dbo].[Reviews_tb] SET Note=@p_Report, Reviewer=@p_Reviewer, RD=@l_now WHERE TID=@p_ReportID
  156.  
  157.                         if @@error != 0
  158.                             raiserror('ошибка обновления отчета исполнителя',16,1)
  159.        
  160.                         set @l_ReportID = @p_ReportID
  161.                     end
  162.  
  163.                     UPDATE [dbo].[Decrees_tb] SET ReportID=@l_ReportID, EditedBy=@p_EditedBy, Reported=@l_now WHERE TID=@p_DecreeID
  164.  
  165.                     if @@error != 0
  166.                         raiserror('ошибка обновления поручения',16,1)
  167.  
  168.                     INSERT INTO [dbo].[OrderChanges_tb](OrderID, Login, Name, Value) VALUES
  169.                         (@p_OrderID, @p_Executor, 'Отчет о выполнении поручения', @p_Report)
  170.                
  171.                 end else if @p_ReviewDueDate is not null begin
  172.                     UPDATE [dbo].[Decrees_tb] SET Login=@p_Executor, Status=0, DueDate=@p_ReviewDueDate, EditedBy=@p_EditedBy, RD=@l_now WHERE TID=@p_DecreeID
  173.  
  174.                     if @@error != 0
  175.                         raiserror('ошибка обновления поручения',16,1)
  176.  
  177.                     INSERT INTO [dbo].[OrderChanges_tb](OrderID, Login, Name, Value) VALUES
  178.                         (@p_OrderID, @p_EditedBy, 'Срок исполнения поручения', @p_ReviewDueDate)
  179.                 end
  180.  
  181.                 set @l_DecreeID = @p_DecreeID
  182.             end
  183.         end
  184.  
  185.         if @@error != 0
  186.             raiserror('ошибка добавления рецензии',16,1)
  187.         --
  188.         -- Add to Order Changes log
  189.         --
  190.         if @is_decree_report = 0
  191.             INSERT INTO [dbo].[OrderChanges_tb](OrderID, Login, Name, Value) VALUES
  192.                 (@p_OrderID, @p_Login, 'Рецензия', case @p_Status
  193.                     when  2 then 'СОГЛАСОВАНО'
  194.                     when  3 then 'ОТКАЗАНО'
  195.                     when  4 then 'ТРЕБУЕТСЯ ОБОСНОВАНИЕ'
  196.                     when  5 then 'Информация'
  197.                     when  6 then 'Оплачено'
  198.                     when  7 then 'Поставлено на склад'
  199.                     when  9 then 'ПОРУЧЕНИЕ'
  200.                     when 10 then 'АУДИТ'
  201.                     when 11 then 'Замечание'
  202.                     when 12 then 'Акцептовано к закрытию'
  203.                     else '...'
  204.                     end +
  205.                     case when [dbo].[CHECK_IsEmpty_fn](@p_Note) = 0 then ':'+@p_Note else '' end
  206.                     )
  207.  
  208.         if @@error != 0
  209.             raiserror('ошибка обработки',16,1)
  210.  
  211.         set @p_Output = 'Registered'
  212.     end else begin
  213.         set @l_ReviewID = 0
  214.         set @l_DecreeID = 0
  215.         set @l_ReportID = 0
  216.         set @p_Output = 'Invalid'
  217.     end
  218.  
  219.     set @p_Output = @p_Output + ':' + cast(@l_ReviewID as varchar) -- + ':' + cast(@l_DecreeID as varchar)
  220.  
  221.     if @p_Mode = 0
  222.         SELECT @l_ReviewID, @p_Output FROM
  223.             dbo.sysobjects where id = object_id(N'[dbo].[REGISTER_Review_sp]') and OBJECTPROPERTY(id, N'IsProcedure') = 1
  224.     else
  225.         return(0)
  226. END
  227.  
  228.  
  229.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement