Advertisement
RomioSul

123w

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