USP_DATAFORMTEMPLATE_VIEW_UNDELIVEREDEMAIL

The load procedure used by the view dataform template "Undelivered Email Summary View"

Parameters

Parameter Parameter Type Mode Description
@DATALOADED bit INOUT Output parameter indicating whether or not data was actually loaded.
@PREPARED int INOUT Prepared
@PROCESSING int INOUT Processing
@NOVALIDRECIPIENTS int INOUT No Valid Recipients
@PROCESSED int INOUT Processed
@UPLOADING int INOUT Uploading
@UPLOADFAILED int INOUT Upload failed
@LOCALEXCEPTION int INOUT Local exception
@ACCEPTED int INOUT Accepted
@SERVEREXCEPTION int INOUT Server exception
@BOUNCED int INOUT Bounced

Definition

Copy


CREATE procedure dbo.USP_DATAFORMTEMPLATE_VIEW_UNDELIVEREDEMAIL
(
    @DATALOADED bit = 0 output,
    @PREPARED int = null output,
    @PROCESSING int = null output,
    @NOVALIDRECIPIENTS int = null output,
    @PROCESSED int = null output,
    @UPLOADING int = null output,
    @UPLOADFAILED int = null output,
    @LOCALEXCEPTION int = null output,
    @ACCEPTED int = null output,
    @SERVEREXCEPTION int = null output,
    @BOUNCED int = null output)
as
    set nocount on;

    set @DATALOADED = 1;

declare @CURRENTUTC datetime = getutcdate()

select 
    @PREPARED = isnull([PREPARED], 0), 
    @PROCESSING = isnull([PROCESSING], 0), 
    @NOVALIDRECIPIENTS = isnull([NOVALIDRECIPIENTS], 0), 
    @PROCESSED = isnull([PROCESSED], 0), 
    @UPLOADING = isnull([UPLOADING], 0), 
    @UPLOADFAILED = isnull([UPLOADFAILED], 0), 
    @LOCALEXCEPTION = isnull([LOCALEXCEPTION], 0), 
    @ACCEPTED = isnull([ACCEPTED], 0), 
    @SERVEREXCEPTION = isnull([SERVEREXCEPTION], 0), 
    @BOUNCED = ISNULL([BOUNCED], 0)
from (
    select 
        [2] as [PREPARED], 
        [3] as [PROCESSING], 
        [5] as [NOVALIDRECIPIENTS], 
        [12] as [PROCESSED], 
        [11] as [UPLOADING], 
        [13] as [UPLOADFAILED], 
        [8] as [LOCALEXCEPTION], 
        [4] as [ACCEPTED], 
        [14] as [SERVEREXCEPTION], 
        [7] as [BOUNCED]--7 is really Completed, but only the DSNed ones are counted 

    from(
        select EmailJob.[Status], 1 as One 
        from EmailJob 
        inner join Email 
            on EmailJob.EmailID = Email.ID
        left outer join EmailJob_Recipient
            on EmailJob.ID = EmailJob_Recipient.EmailJobID 
            and Email.[Type] = 1
        where (Email.[Type] in (1, 16))--1 = Acknowledgement, 16 = BBDM (for membership renewals)

            and (EmailJob.CreateDate > DATEADD(MONTH, -1, @CURRENTUTC))--should keep in sync with datalist 

            and (((EmailJob.[Status] = 2) and (EmailJob.CreateDate < DATEADD(MINUTE, -10, @CURRENTUTC)))--Prepared

                or ((EmailJob.[Status] = 3) and (EmailJob.CreateDate < DATEADD(MINUTE, -15, @CURRENTUTC)))--Processing

                or (EmailJob.[Status] = 5)--No Valid Recipients

                or ((EmailJob.[Status] = 12) and (EmailJob.CreateDate < DATEADD(MINUTE, -20, @CURRENTUTC)))--Processed

                or ((EmailJob.[Status] = 11) and (EmailJob.CreateDate < DATEADD(HOUR, -1, @CURRENTUTC)))--Uploading

                or (EmailJob.[Status] = 13)--Upload failed

                or (EmailJob.[Status] = 8)--Local exception

                or ((EmailJob.[Status] = 4) and (EmailJob.CreateDate < DATEADD(HOUR, -1, @CURRENTUTC)))--Accepted

                or (EmailJob.[Status] = 14)--Server exception

                or ((EmailJob.[Status] = 7) and (Email.[Type] = 1) and (EmailJob_Recipient.DSNed = 1))--Bounced (Delivery Status Notification)      

            ) 
    ) as src
    pivot(
        sum(One) for [Status] in ([2],[3],[5],[12],[11],[13],[8],[4],[14],[7])
    ) as pvt
) as out


    return 0;