Advertisement
Guest User

Untitled

a guest
Apr 21st, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 15.77 KB | None | 0 0
  1. -- =============================================
  2. -- Description: Returns an XML package of all the details of a access/gst_pass record
  3. -- Example Call: execute [dbo].[siriussp_PassStatusInquiry] @tcTableName = 'GST_PASS', @tnPass_no = 527004001
  4. -- =============================================
  5. ALTER PROCEDURE [dbo].[siriussp_PassStatusInquiry]
  6.    @tcTableName  VARCHAR(10) ,   -- must be either 'ACCESS' or 'GST_PASS'
  7.    @tnPass_no    NUMERIC(17, 0)
  8. AS
  9.    SET NOCOUNT  ON;
  10.    DECLARE @xmlResult  VARCHAR(MAX) = '',
  11.            @xmlResult2 VARCHAR(MAX),
  12.            @cCardNo    VARCHAR(22),
  13.            @lDW_Active BIT ;
  14.  
  15.    SET @tcTableName = RTRIM(UPPER(@tcTableName)) ;
  16.  
  17.     -- return empty string if pass does not exist
  18.     if not exists(SELECT pass_no FROM dbo.access   WHERE @tcTableName = 'ACCESS'   AND pass_no = @tnPass_no
  19.                   UNION
  20.                   SELECT pass_no FROM dbo.gst_pass WHERE @tcTableName = 'GST_PASS' AND pass_no = @tnPass_no)
  21.     BEGIN
  22.         SELECT   @xmlResult AS result;
  23.         RETURN (0);
  24.     END
  25.    
  26.     -- Guest passes only - include passholder info
  27.    IF @tcTableName = 'GST_PASS'
  28.    BEGIN
  29.         SET @xmlResult = @xmlResult + '<csrPassholderInfo>' ;
  30.         SET @xmlResult = @xmlResult +
  31.                          ISNULL((select p.guest_no, rtrim(g.first_name) as first_name, rtrim(g.last_name) as last_name, g.birth_date
  32.                                  from gst_pass p
  33.                                  left outer join guests g on g.guest_no = p.guest_no
  34.                                  where p.pass_no = @tnPass_no for xml raw, elements absent), '') ;
  35.         SET @xmlResult = @xmlResult + '</csrPassholderInfo>'
  36.    END
  37.  
  38.     -- Get basic access/pass info
  39.     SET @xmlResult = @xmlResult + '<csrPassInfo>' ;
  40.    IF @tcTableName = 'GST_PASS'
  41.         SET @xmlResult = @xmlResult +
  42.                          isnull((select p.last_use, p.total_uses, p.points1, p.points2, p.money1, p.money2, p.warnings,
  43.                                         p.blackout_s, p.blackout_e, rtrim(p.bl_reason) as bl_reason,
  44.                                         cast(case when datalength(rtrim(p.voided_by)) = 0 AND datalength(rtrim(p.voided_by)) = 0 then 0 else 1 end as bit) as voided,
  45.                                         p.voided_by, p.voided_for, p.printcount, p.validcount, p.dis_count, p.val_parent,
  46.                                         p.department, p.category, p.item, rtrim(i.descrip) AS DCIdescrip, p.amt_paid, p.account, a.full_name as AccntName,
  47.                                         p.invoice_no, p.salespoint, p.operator, p.date_time
  48.                                  from gst_pass p
  49.                                  left outer join dbo.items i on i.department = p.department AND i.category = p.category AND i.item = p.item
  50.                                  left outer join dbo.accounts a on p.account = a.acct_name
  51.                                  where p.pass_no = @tnPass_no for xml raw, elements absent), '') ;
  52.     ELSE
  53.         SET @xmlResult = @xmlResult +
  54.                          isnull((select p.last_use, p.total_uses, p.points1, p.points2, p.money1, p.money2, p.warnings,
  55.                                         p.blackout_s, p.blackout_e, p.bl_reason,
  56.                                         CAST(case when datalength(rtrim(p.voided_by)) = 0 AND datalength(rtrim(p.voided_by)) = 0 then 0 else 1 end as bit) as voided,
  57.                                         p.voided_by, p.voided_for, p.validcount, p.dis_count, p.val_parent,
  58.                                         p.department, p.category, p.item, rtrim(i.descrip) AS DCIdescrip, p.amt_paid, p.account, a.full_name as AccntName,
  59.                                         p.salespoint, p.operator, p.date_time
  60.                                  from access p
  61.                                  left outer join dbo.items i on i.department = p.department AND i.category = p.category AND i.item = p.item
  62.                                  left outer join dbo.accounts a on p.account = a.acct_name
  63.                                  where p.pass_no = @tnPass_no for xml raw, elements absent), '') ;
  64.     SET @xmlResult = @xmlResult + '</csrPassInfo>' ;
  65.  
  66.     -- Get Debitware info
  67.    IF @tcTableName = 'GST_PASS'
  68.     BEGIN
  69.         SELECT @cCardNo = p.swipe_no, @lDW_Active = p.dw_active
  70.         FROM gst_pass p
  71.         WHERE datalength(rtrim(p.swipe_no)) > 0 AND p.invoice_no <> 0 AND p.dw_active = 1 ;
  72.         IF datalength(rtrim(@cCardNo)) > 0 and @lDW_Active = 1
  73.         BEGIN
  74.             IF OBJECT_ID('tempdb..#tmpResults', N'U') IS NOT NULL   DROP TABLE #tmpResults ;
  75.             CREATE TABLE #tmpResults (
  76.                 approval CHAR(6)
  77.                 ,invoice_no NUMERIC(17, 0)
  78.                 ,inv_bal MONEY
  79.                 ,sp_bal MONEY
  80.                 ,sp_bal_dy MONEY
  81.                 ,crLimit MONEY
  82.                 ,spLimit MONEY
  83.                 ,spLimit_Dy MONEY
  84.                 ,pass_no NUMERIC(17, 0)
  85.                 ,guest_no NUMERIC(17, 0)
  86.                 ,cErr VARCHAR(100)
  87.                 ,availbonus MONEY
  88.                 ,cashoutbal MONEY
  89.                 ,voided_for VARCHAR(15)
  90.                 ,Voided_By VARCHAR(6)
  91.                 ,ignoreExp BIT
  92.                 );
  93.             INSERT INTO #tmpResults (
  94.                 approval
  95.                 ,invoice_no
  96.                 ,inv_bal
  97.                 ,sp_bal
  98.                 ,sp_bal_dy
  99.                 ,crLimit
  100.                 ,spLimit
  101.                 ,spLimit_Dy
  102.                 ,pass_no
  103.                 ,guest_no
  104.                 ,cErr
  105.                 ,availbonus
  106.                 ,cashoutbal
  107.                 ,voided_for
  108.                 ,Voided_By
  109.                 ,ignoreExp
  110.                 )
  111.             EXECUTE dbo.siriussp_GetDebitwareApproval @tcOperator = 'ADMIN'
  112.                 ,@tcSalespoint = 'SYSTEM'
  113.                 ,@tcCardNo = @cCardNo
  114.                 ,@tnSaleNo = 0
  115.                 ,@cApproval = ''
  116.                 ,@tnAmount = 0 ;
  117.  
  118.             SET @xmlResult2 = isnull((select top 1 replicate('*', 12) + right(rtrim(@cCardNo),4) as swipe_no,
  119.                                              cast(inv_bal as varchar(20)) as inv_bal,
  120.                                              cast(sp_bal as varchar(20)) as sp_bal,
  121.                                              cast(sp_bal_dy as varchar(20)) as sp_bal_dy,
  122.                                              cast(crlimit as varchar(20)) as crlimit,
  123.                                              cast(splimit as varchar(20)) as splimit,
  124.                                              cast(splimit_dy as varchar(20)) as splimit_dy,
  125.                                              rtrim(cErr) as err,
  126.                                              cast(Availbonus as varchar(20)) as AvailBonus,
  127.                                              cast(CashoutBal as varchar(20)) as CashoutBal,
  128.                                              IgnoreExp
  129.                                               from #tmpResults for xml raw, elements absent), '') ;
  130.             DROP TABLE #tmpResults ;
  131.             IF DATALENGTH(@xmlResult2) > 0
  132.                 SET @xmlResult = @xmlResult + '<csrDebitware>' + @xmlResult2 + '</csrDebitware>' ;
  133.         END
  134.     END
  135.  
  136.     -- Get linked passes
  137.    IF @tcTableName = 'GST_PASS'
  138.         SET @xmlResult2 = isnull((select p.pass_no, g.first_name, g.last_name,
  139.                                          case when p.pass_no = p.masterpass then cast(1 as bit) else cast(0 as bit) end as ismaster, total_uses
  140.                                   from gst_pass p
  141.                                   left outer join guests g on g.guest_no = p.guest_no
  142.                                   where p.masterpass = @tnPass_no and p.pass_no <> @tnPass_no for xml raw, elements absent), '') ;
  143.     ELSE
  144.         SET @xmlResult2 = isnull((select p.pass_no,
  145.                                          case when p.pass_no = p.masterpass then cast(1 as bit) else cast(0 as bit) end as ismaster, total_uses
  146.                                   from access p
  147.                                   where p.masterpass = @tnPass_no and p.pass_no <> @tnPass_no for xml raw, elements absent), '') ;
  148.     IF DATALENGTH(@xmlResult2) > 0
  149.         SET @xmlResult = @xmlResult + '<csrLinkedPasses>' + @xmlResult2 + '</csrLinkedPasses>' ;
  150.    
  151.     -- Get Autosale info
  152.    IF @tcTableName = 'GST_PASS'
  153.     BEGIN
  154.         DECLARE @lFirstUse BIT = 1,
  155.                 @cAutoSaleInfo VARCHAR(MAX) = '',
  156.                 @nA_shiftype TINYINT,
  157.                 @lA_multqty BIT,
  158.                 @lA_custmqty BIT,
  159.                 @nTemplateID INT ;
  160.  
  161.         SELECT TOP 1 @nA_shiftype = t.a_shiftype, @lA_multqty = t.a_multqty, @lA_custmqty = t.a_custmqty, @nTemplateID = t.TemplateID
  162.         FROM dbo.gst_pass p
  163.         LEFT OUTER JOIN dbo.template t ON t.department = p.department AND t.category = p.category AND t.item = p.item
  164.         WHERE p.pass_no = @tnPass_no ;
  165.  
  166.         IF @lA_multqty = 1
  167.         BEGIN
  168.             IF OBJECT_ID('tempdb..#tmpResults2', N'U') IS NOT NULL  DROP TABLE #tmpResults ;
  169.             CREATE TABLE #tmpResults2 (department char(10)
  170.                                       ,category CHAR(10)
  171.                                       ,item CHAR(10)
  172.                                       ,descrip VARCHAR(25)
  173.                                       ,maxqty INT
  174.                                       ,remqty INT
  175.                                       );
  176.  
  177.             -- Calculate if this is a first use
  178.             IF @nA_shiftype < 2    -- shift = 1 day
  179.                 IF exists(select count(activ_id)
  180.                              from dbo.gst_actv with (index = datetimerefnoactivtype)
  181.                              where ref_no = cast(@tnPass_no as char(16)) and
  182.                                      activ_type = 110 and
  183.                                      date_time between DATEADD(dd,CAST(DATEDIFF(DAY,'17530101',current_timestamp) AS INT),'17530101') AND
  184.                                                              DATEADD(ms, 86399997, CAST(CAST(current_timestamp AS DATE) AS DATETIME)) )
  185.                     SET @lFirstUse = 0 ;
  186.  
  187.             -- Get all the defined autosale DCIs, whether standard in template or custom in gst_pass
  188.             INSERT INTO #tmpResults2 (department, category, item, maxqty, descrip)
  189.             SELECT case when @lA_custmqty = 0 then t.a_autodep1 else p.a_autodep1 end as department,
  190.                    case when @lA_custmqty = 0 then t.a_autocat1 else p.a_autocat1 end as category,
  191.                    case when @lA_custmqty = 0 then t.a_autoitm1 else p.a_autoitm1 end as item,
  192.                    case when @lA_custmqty = 0 then t.a_maxqty1 else p.a_maxqty1 end as item, '' as descrip
  193.             FROM dbo.template t
  194.             LEFT OUTER JOIN dbo.gst_pass p ON p.pass_no = @tnPass_no
  195.             WHERE t.TemplateID = @nTemplateID AND ( (@lA_custmqty = 0 AND DATALENGTH(RTRIM(t.a_autoitm1)) > 0) OR
  196.                                                     (@lA_custmqty = 1 AND DATALENGTH(RTRIM(p.a_autoitm1)) > 0) )
  197.             UNION
  198.             SELECT case when @lA_custmqty = 0 then t.a_autodep2 else p.a_autodep2 end as department,
  199.                    case when @lA_custmqty = 0 then t.a_autocat2 else p.a_autocat2 end as category,
  200.                    case when @lA_custmqty = 0 then t.a_autoitm2 else p.a_autoitm2 end as item,
  201.                    case when @lA_custmqty = 0 then t.a_maxqty2 else p.a_maxqty2 end as item, '' as descrip
  202.             FROM dbo.template t
  203.             LEFT OUTER JOIN dbo.gst_pass p ON p.pass_no = @tnPass_no
  204.             WHERE t.TemplateID = @nTemplateID AND ( (@lA_custmqty = 0 AND DATALENGTH(RTRIM(t.a_autoitm2)) > 0) OR
  205.                                                     (@lA_custmqty = 1 AND DATALENGTH(RTRIM(p.a_autoitm2)) > 0) )
  206.             UNION
  207.             SELECT case when @lA_custmqty = 0 then t.a_autodep3 else p.a_autodep3 end as department,
  208.                    case when @lA_custmqty = 0 then t.a_autocat3 else p.a_autocat3 end as category,
  209.                    case when @lA_custmqty = 0 then t.a_autoitm3 else p.a_autoitm3 end as item,
  210.                    case when @lA_custmqty = 0 then t.a_maxqty3 else p.a_maxqty3 end as item, '' as descrip
  211.             FROM dbo.template t
  212.             LEFT OUTER JOIN dbo.gst_pass p ON p.pass_no = @tnPass_no
  213.             WHERE t.TemplateID = @nTemplateID AND ( (@lA_custmqty = 0 AND DATALENGTH(RTRIM(t.a_autoitm3)) > 0) OR
  214.                                                     (@lA_custmqty = 1 AND DATALENGTH(RTRIM(p.a_autoitm3)) > 0) )
  215.             UNION
  216.             SELECT case when @lA_custmqty = 0 then t.a_autodep4 else p.a_autodep4 end as department,
  217.                    case when @lA_custmqty = 0 then t.a_autocat4 else p.a_autocat4 end as category,
  218.                    case when @lA_custmqty = 0 then t.a_autoitm4 else p.a_autoitm4 end as item,
  219.                    case when @lA_custmqty = 0 then t.a_maxqty4 else p.a_maxqty4 end as item, '' as descrip
  220.             FROM dbo.template t
  221.             LEFT OUTER JOIN dbo.gst_pass p ON p.pass_no = @tnPass_no
  222.             WHERE t.TemplateID = @nTemplateID AND ( (@lA_custmqty = 0 AND DATALENGTH(RTRIM(t.a_autoitm4)) > 0) OR
  223.                                                     (@lA_custmqty = 1 AND DATALENGTH(RTRIM(p.a_autoitm4)) > 0) )
  224.             UNION
  225.             SELECT case when @lA_custmqty = 0 then t.a_autodep5 else p.a_autodep5 end as department,
  226.                    case when @lA_custmqty = 0 then t.a_autocat5 else p.a_autocat5 end as category,
  227.                    case when @lA_custmqty = 0 then t.a_autoitm5 else p.a_autoitm5 end as item,
  228.                    case when @lA_custmqty = 0 then t.a_maxqty5 else p.a_maxqty5 end as item, '' as descrip
  229.             FROM dbo.template t
  230.             LEFT OUTER JOIN dbo.gst_pass p ON p.pass_no = @tnPass_no
  231.             WHERE t.TemplateID = @nTemplateID AND ( (@lA_custmqty = 0 AND DATALENGTH(RTRIM(t.a_autoitm5)) > 0) OR
  232.                                                     (@lA_custmqty = 1 AND DATALENGTH(RTRIM(p.a_autoitm5)) > 0) )
  233.             UNION
  234.             SELECT case when @lA_custmqty = 0 then t.a_autodep6 else p.a_autodep6 end as department,
  235.                    case when @lA_custmqty = 0 then t.a_autocat6 else p.a_autocat6 end as category,
  236.                    case when @lA_custmqty = 0 then t.a_autoitm6 else p.a_autoitm6 end as item,
  237.                    case when @lA_custmqty = 0 then t.a_maxqty6 else p.a_maxqty6 end as item, '' as descrip
  238.             FROM dbo.template t
  239.             LEFT OUTER JOIN dbo.gst_pass p ON p.pass_no = @tnPass_no
  240.             WHERE t.TemplateID = @nTemplateID AND ( (@lA_custmqty = 0 AND DATALENGTH(RTRIM(t.a_autoitm6)) > 0) OR
  241.                                                     (@lA_custmqty = 1 AND DATALENGTH(RTRIM(p.a_autoitm6)) > 0) ) ;
  242.  
  243.             UPDATE #tmpResults2 set descrip = i.descrip
  244.             FROM #tmpResults2 xx JOIN items i ON xx.department = i.department AND xx.category = i.category AND xx.item = i.item ;
  245.  
  246.             IF @lFirstUse = 1 OR @nA_shiftype >= 2    -- not shift = 1 day
  247.                 UPDATE #tmpResults2 set remqty = xx.maxqty
  248.                 FROM #tmpResults2 xx ;
  249.             ELSE
  250.             BEGIN
  251.                 UPDATE #tmpResults2 set remqty = xx.maxqty - (coalesce(s.daycount, 0))
  252.                 FROM #tmpResults2 xx
  253.                 LEFT OUTER JOIN (SELECT u.department, u.category, u.item, SUM(u.uses) AS daycount
  254.                              FROM dbo.uses_aut u with (index = uses_aut_date_time)
  255.                              WHERE u.pass_no = @tnPass_no AND u.is_ticket = 0 AND
  256.                                    u.date_time BETWEEN DATEADD(dd,CAST(DATEDIFF(DAY,'17530101',current_timestamp) AS INT),'17530101') AND
  257.                                                                       DATEADD(ms, 86399997, CAST(CAST(current_timestamp AS DATE) AS DATETIME))
  258.                              GROUP BY u.department, u.category, u.item) s
  259.                              ON s.department = xx.department AND s.category = xx.category AND s.item = xx.item
  260.             END
  261.  
  262.             SET @xmlResult2 = isnull((select * from #tmpResults2 for xml raw, elements absent), '') ;
  263.             DROP TABLE #tmpResults2 ;
  264.             IF DATALENGTH(@xmlResult2) > 0
  265.                 SET @xmlResult = @xmlResult + '<csrAutoSales>' + @xmlResult2 + '</csrAutoSales>' ;
  266.         END
  267.     END
  268.  
  269.     -- Get Reserved Seats Info
  270.     DECLARE @nTrans_no NUMERIC(17,0) ;
  271.    IF @tcTableName = 'GST_PASS'
  272.         SELECT @nTrans_no = trans_no FROM dbo.gst_pass WHERE pass_no = @tnPass_no ;
  273.     ELSE
  274.         SELECT @nTrans_no = trans_no FROM dbo.access WHERE pass_no = @tnPass_no ;
  275.     SET @xmlResult2 = isnull((select * from dbo.siriusfn_rsGetSeatsInfo(@nTrans_no) for xml raw, elements absent), '') ;
  276.     IF DATALENGTH(@xmlResult2) > 0
  277.         SET @xmlResult = @xmlResult + '<csrReservedSeats>' + @xmlResult2 + '</csrReservedSeats>' ;
  278.  
  279.  
  280.     -- Get Member Benefits Info.  Use global temp table "##csrPassStatusInquiry" because INSERT EXEC statements cannot be nested
  281.     DECLARE @tCurrentDT DATETIME = current_timestamp ;
  282.     SET @xmlResult2 = '' ;
  283.     BEGIN TRY
  284.         EXEC dbo.siriussp_mbValidateBenefits @dtScanDateTime = @tCurrentDT,
  285.                                                     @nQuantity=1, @nPassNo=@tnPass_no, @cTable= @tcTableName,
  286.                                                     @cDepartment = '', @cCategory = '', @cItem = '', @topRows = 999, @cMbRedemptions = '',
  287.                                                     @tlPassStatusInquiryTableOutput = 1;
  288.         IF OBJECT_ID('tempdb..##csrPassStatusInquiry', N'U') IS NOT NULL
  289.         BEGIN
  290.             SET @xmlResult2 = isnull((SELECT * FROM ##csrPassStatusInquiry for xml raw, elements absent), '') ;
  291.             DROP TABLE ##csrPassStatusInquiry ;
  292.         END
  293.     END TRY
  294.     BEGIN CATCH
  295.         IF OBJECT_ID('tempdb..##csrPassStatusInquiry', N'U') IS NOT NULL    DROP TABLE ##csrPassStatusInquiry ;
  296.     END CATCH
  297.     IF DATALENGTH(@xmlResult2) > 0
  298.         SET @xmlResult = @xmlResult + '<csrMemberBenefits>' + @xmlResult2 + '</csrMemberBenefits>' ;
  299.  
  300.  
  301.     -- Finally, return the it all
  302.     SET @xmlResult = REPLACE(@xmlResult, '&#x20;', ' ') ;
  303.     SELECT   @xmlResult AS result;
  304.     RETURN (0);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement