Advertisement
RomioSul

qqq

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